如何将 LinkedTreeMap 转换为 gson JsonObject
How do I convert a LinkedTreeMap to gson JsonObject
对于 java 数据处理程序,我发送格式正确的 JSON,但 Spring、Java 决定如何转换它看到的内容和框架的组合我真的不应该去改变 JSON 的 mangle,这样一旦我看到它,它就变成了 LinkedTreeMap,我需要将它转换成 JsonObject。
这不是将 serialize/de-serialize JSON 转换为 java 对象,它的 "final form" 是一个 gson JsonObject,它需要能够按字面意思处理任何有效的 JSON。
{
"key":"value",
"object": {
"array":[
"value1",
"please work"
]
}
}
是我一直在使用的示例,一旦我看到它,它就是 .toString() 到
的 LinkedTreeMap
{key=value, object={array=[value1, please work]}}
您可以将“=”替换为“:”,但没有
的内部引号
new JsonParser().parse(gson.toJson(STRING)).getAsJsonObject()
策略。
有没有更直接的方法可以将 LinkedTreeMap 转换为 JsonObject,或者有一个库可以将内部引号添加到字符串中,甚至可以将 sting 转换为不需要内部引号的 JsonObject?
您通常必须将对象序列化为 JSON,然后将 JSON 解析回 JsonObject
。幸运的是,Gson
提供了一种跳过解析的 toJsonTree
方法。
LinkedTreeMap<?,?> yourMap = ...;
JsonObject jsonObject = gson.toJsonTree(yourMap).getAsJsonObject();
请注意,如果可以,只需将 JSON 直接反序列化为带有
的 JsonObject
gson.fromJson(theJson, JsonObject.class);
对于 java 数据处理程序,我发送格式正确的 JSON,但 Spring、Java 决定如何转换它看到的内容和框架的组合我真的不应该去改变 JSON 的 mangle,这样一旦我看到它,它就变成了 LinkedTreeMap,我需要将它转换成 JsonObject。 这不是将 serialize/de-serialize JSON 转换为 java 对象,它的 "final form" 是一个 gson JsonObject,它需要能够按字面意思处理任何有效的 JSON。
{
"key":"value",
"object": {
"array":[
"value1",
"please work"
]
}
}
是我一直在使用的示例,一旦我看到它,它就是 .toString() 到
的 LinkedTreeMap{key=value, object={array=[value1, please work]}}
您可以将“=”替换为“:”,但没有
的内部引号new JsonParser().parse(gson.toJson(STRING)).getAsJsonObject()
策略。
有没有更直接的方法可以将 LinkedTreeMap 转换为 JsonObject,或者有一个库可以将内部引号添加到字符串中,甚至可以将 sting 转换为不需要内部引号的 JsonObject?
您通常必须将对象序列化为 JSON,然后将 JSON 解析回 JsonObject
。幸运的是,Gson
提供了一种跳过解析的 toJsonTree
方法。
LinkedTreeMap<?,?> yourMap = ...;
JsonObject jsonObject = gson.toJsonTree(yourMap).getAsJsonObject();
请注意,如果可以,只需将 JSON 直接反序列化为带有
的JsonObject
gson.fromJson(theJson, JsonObject.class);