首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用GSON修改json而不使用POJO。

使用GSON修改json而不使用POJO。
EN

Stack Overflow用户
提问于 2013-01-24 18:46:09
回答 6查看 28K关注 0票数 16

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

以下是使用案例:

代码语言:javascript
运行
复制
String jsonString = "[{\"key1\":\"Hello\",\"key2\":\"World\"},{\"key1\":\"Nice\",\"key2\":\"Town\"}]";

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

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

EN

回答 6

Stack Overflow用户

发布于 2013-04-10 13:01:30

这是我想出的最短的。

代码语言:javascript
运行
复制
JsonElement je = new Gson().fromJson(jsonString, JsonElement.class);
JsonObject jo = je.getAsJsonObject();
jo.add("key", value);

有了JsonObject之后,gson有很多方法可以操作它。

票数 12
EN

Stack Overflow用户

发布于 2013-01-25 01:25:57

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

代码语言:javascript
运行
复制
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并使用强制转换工具。

票数 3
EN

Stack Overflow用户

发布于 2013-01-25 00:21:20

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14499449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档