转换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吗?或者如果我自己编写解析器会更好?
当前回答
我这样做。这很简单。
import java.util.Map;
import org.json.JSONObject;
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
JSONObject jsonObj = new JSONObject("{ \"f1\":\"v1\"}");
@SuppressWarnings("unchecked")
Map<String, String> map = new Gson().fromJson(jsonObj.toString(),Map.class);
System.out.println(map);
}
}
其他回答
JSON to Map总是字符串/对象数据类型。我有GSON lib从谷歌。 Gson库使用字符串不为复杂的对象,你需要做一些其他的事情
JsonTools库非常完整。它可以在Github上找到。
试试这段代码,对我很管用,
Map<String, Object> retMap = new Gson().fromJson(
myJsonString, new TypeToken<HashMap<String, Object>>() {}.getType()
);
我希望您写自己的解析器是在开玩笑。: -)
对于这样一个简单的映射,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内容字符串)
这种方式就像地图一样…
JSONObject fieldsJson = new JSONObject(json);
String value = fieldsJson.getString(key);
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.1</version>
</dependency>