转换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);
}
}
其他回答
如果你使用org。JSONObject有一个toMap()方法。 你可以轻松做到:
Map<String, Object> myMap = myJsonObject.toMap();
使用JSON库,例如http://www.json.org/java/
// Assume you have a Map<String, String> in JSONObject jdata
@SuppressWarnings("unchecked")
Iterator<String> nameItr = jdata.keys();
Map<String, String> outMap = new HashMap<String, String>();
while(nameItr.hasNext()) {
String name = nameItr.next();
outMap.put(name, jdata.getString(name));
}
试试这段代码,对我很管用,
Map<String, Object> retMap = new Gson().fromJson(
myJsonString, new TypeToken<HashMap<String, Object>>() {}.getType()
);
JSON to Map总是字符串/对象数据类型。我有GSON lib从谷歌。
工作得非常好,JDK 1.5是最低要求。
使用谷歌的Gson 2.7(可能是更早的版本,但我测试了2.7),它很简单:
Map map = gson.fromJson(json, Map.class);
它返回类型为com.google.gson.internal.LinkedTreeMap的Map,并对嵌套对象递归地工作。