#json #gson #jsonpath
#json #gson #jsonpath
Вопрос:
Ниже приведен мой объект JSON
{
"Germany": {
"Languages": [
"German",
"English",
"Austrian German"
],
"Continent": "unknown",
"Capital": "Berlin"
},
"China": {
"Language": [
"Standard Mandarin",
"Cantenese",
"English"
],
"Continent": "Asia",
"Capital": "Shanghai"
}
}
Чего я пытаюсь добиться, так это выполнить поиск по ключевому слову [Например: Germany], если оно существует, а затем обновить атрибут Continent
от unknown
до Europe
.
Как мы могли бы достичь этого с помощью GSON?
Ответ №1:
Вот код для обновления континента, если условие выполнено (т. Е. Континент Германии «неизвестен» во входном JSON).
public static void main(String[] args) {
String json = "{"Germany": {"Languages": ["German","English","Austrian German"],"Continent": "unknown","Capital": "Berlin" }, "China": {"Language": ["Standard Mandarin","Cantenese","English"],"Continent": "Asia","Capital": "Shanghai" }}";
Gson gson = new Gson();
JsonElement countryJsonElement = gson.fromJson(json, JsonElement.class);
JsonElement germanyJsonElement = countryJsonElement.getAsJsonObject().get("Germany");
boolean updatedFlag = false;
if (germanyJsonElement != null) {
if (germanyJsonElement.getAsJsonObject().get("Continent").getAsString().equalsIgnoreCase("unknown")) {
germanyJsonElement.getAsJsonObject().remove("Continent");
germanyJsonElement.getAsJsonObject().addProperty("Continent", "Europe");
updatedFlag = true;
}
}
if (updatedFlag) {
countryJsonElement.getAsJsonObject().remove("Germany");
countryJsonElement.getAsJsonObject().add("Germany", germanyJsonElement);
System.out.println("Germany continent updated....");
System.out.println(countryJsonElement.toString());
} else {
System.out.println("Germany continent not updated....");
}
}
Комментарии:
1. [ { «applicationId»: «email-id-1202», «extremefnumber»: «targobank-ref-number2018-04-09T17:12:49.506», «Имя банкноты»: «targobank», «заявители»: [ { «PersonID»: «1», «документы»:[ { «fileId»: «2», «documentId»: «2», «type»: «TAX_DOCUMENTS» } ] } ], «data»: { «FirstName»: «First», «LastName»: «Last», «branchCode»: «branch-code»} } ]
2. У меня есть требование обновить значение типа, попробовал приведенный выше код и не смог достичь, не могли бы вы помочь