转换JSON代码的最佳方法是什么:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
在Java Map中,其中一个键是(field1, field2),这些字段的值是(value1, value2)。
什么好主意吗?我应该使用Json-lib吗?或者如果我自己编写解析器会更好?
转换JSON代码的最佳方法是什么:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
在Java Map中,其中一个键是(field1, field2),这些字段的值是(value1, value2)。
什么好主意吗?我应该使用Json-lib吗?或者如果我自己编写解析器会更好?
当前回答
如果你使用org。JSONObject有一个toMap()方法。 你可以轻松做到:
Map<String, Object> myMap = myJsonObject.toMap();
其他回答
import net.sf.json.JSONObject
JSONObject.fromObject(yourJsonString).toMap
如果你使用org。JSONObject有一个toMap()方法。 你可以轻松做到:
Map<String, Object> myMap = myJsonObject.toMap();
另一个选择是json-simple,可以在Maven Central中找到:
(JSONObject)JSONValue.parse(someString); //JSONObject is actually a Map.
工件是24kbytes,没有其他运行时依赖项。
我希望您写自己的解析器是在开玩笑。: -)
对于这样一个简单的映射,http://json.org (java部分)中的大多数工具都可以工作。 对于其中一个(Jackson https://github.com/FasterXML/jackson-databind/#5-minute-tutorial-streaming-parser-generator),你会这样做:
Map<String,Object> result =
new ObjectMapper().readValue(JSON_SOURCE, HashMap.class);
(其中JSON_SOURCE是文件、输入流、阅读器或json内容字符串)
java.lang.reflect.Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
Gson gson = new Gson();
Map<String, Object> categoryicons = gson.fromJson(json, mapType );