使用GSON修改json,而无需使用POJO

2022-09-03 06:38:24

我想修改json内容而不将其转换为POJO。我正在使用GSON图书馆。

以下是使用案例:

String jsonString = "[{\"key1\":\"Hello\",\"key2\":\"World\"},{\"key1\":\"Nice\",\"key2\":\"Town\"}]";

JsonElement jsonElement = gson.fromJson(jsonString, JsonElement.class);     

有没有办法在每个数组中将key1的值设置为某个值(假设“Test”),而无需将内容转换为POJO


答案 1

这是我想到的最短的。

JsonElement je = new Gson().fromJson(jsonString, JsonElement.class);
JsonObject jo = je.getAsJsonObject();
jo.add("key", value);

一旦你有了JsonObject,gson就有很多方法来操纵它。


答案 2

您始终可以获得与 JsonElement 不同的类型,或者使用 JsonElement.getAsJsonObject 强制转换为对象(如果可能)。

String jsonString = "[{\"key1\":\"Hello\",\"key2\":\"World\"}, ...]";

JsonArray jsonArray = gson.fromJson(jsonString, JsonElement.class).getAsJsonArray();
JsonObject firstObject = jsonArray.get(i).getAsJsonObject();
firstObject.addProperty("key1", "Test");

我之前错了。似乎没有JsonArray适配器;你必须得到一个JsonElement并使用转换工具。