Синтаксический анализ объекта JSON с использованием GSON и обновление файла JSON (поиск и обновление)

#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. У меня есть требование обновить значение типа, попробовал приведенный выше код и не смог достичь, не могли бы вы помочь