使用GSON修改json而不使用POJO

lin*_*asy 14 java json gson

我想修改json内容而不将其转换为POJO.我正在使用GSON Library.

以下是用例:

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

JsonElement jsonElement = gson.fromJson(jsonString, JsonElement.class);     
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以将key1的值设置为每个数组中的某个值(比如说"Test"),而无需将事物转换为POJO

Bru*_*dge 9

这是我想出的最短的.

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

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


Pro*_*uce 2

一种方法是将 JSON 转换为 a java.util.Map,修改 Map,然后从那里开始(这可能意味着将 Map 序列化回 JSON)。

这种方法符合我的偏好,即使用正确的 API 来完成正确的工作,最大限度地减少使用 Gson 等工具来处理序列化/反序列化(我理解这是它的设计目的)。也就是说,不要使用 Gson API 作为替代数据结构。