gpt4 book ai didi

java - 如何在 Java 中使用 GSON 将 JSON 对象的映射转换为 JSON?

转载 作者:行者123 更新时间:2023-11-29 10:02:11 24 4
gpt4 key购买 nike

我有一个 JSON 对象映射如下:

Map<String,Object> map = HashMap<String,Object>();
map.put("first_name", "prod");
JSONObject jsonObj = new JSONObject("some complex json string here");
map.put("data", jsonObj);

Gson gson = new Gson();
String result = gson.toJson(map);

现在如果“这里有一些复杂的 JSON 字符串”是:

{"sender":{"id":"test test"},"recipients":{"id":"test1 test1"} }

并执行上面的代码给我类似的东西:

{
"first_name": "prod",
"data": {
"map": {
"sender": {
"map": {
"id": "test test"
}
}
},
"recipients": {
"map": {
"id": "test1 test1"
}
}
}
}
}

我可能在那里有一些语法错误,但基本上我不知道为什么我会看到对象环绕在 map 的周围。

更新

根据评论,混合使用不同的 json 解析器不是一个好主意。我能理解。但我的情况需要调用一个外部 api,它采用最终使用 gson 反序列化的对象的 HashMap 。

是否有任何其他对象床边 JSONObject 我可以添加到 map 并且仍然让 gson 从中创建 json 而无需额外的“ map ”结构?我知道我可以创建 java bean 并实现它。但我正在寻找一种更简单的方法,因为我的数据结构可能很复杂。

更新2

退后一步,我得到了一个 xml 字符串。我已经将它们转换为 json 对象。现在我必须使用一个外部 api,它需要一个 map ,然后在外部服务中使用 gson 将其转换为 json 字符串。

所以我得到了一个 xml 数据结构,但我需要将映射传递给该函数。当使用 gson 转换为 json 字符串时,我上面描述的方式会产生额外的“映射”结构。我无法控制更改外部服务的行为方式(例如使用 gson 转换 map )。

最佳答案

混合来自两个不同 JSON 库的类将以泪流满面而告终。那是你的问题; JSONObject 不是 Gson 的一部分。此外,尝试将 Java 数据结构与库的解析树表示混合也是一个坏主意;从概念上讲,JSON 中的对象 map 。

如果你打算使用 Gson,要么使用所有 Java 对象并让 Gson 转换它们,要么使用 Gson 中的类:

JsonObject root = new JsonObject();
root.addProperty("first_name", "prod");

JsonElement element = new JsonParser().parse(complexJsonString);
root.addProperty("data", element);

String json = new Gson().toJson(root);

关于java - 如何在 Java 中使用 GSON 将 JSON 对象的映射转换为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com