转换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吗?或者如果我自己编写解析器会更好?
当前回答
使用谷歌的Gson 2.7(可能是更早的版本,但我测试了2.7),它很简单:
Map map = gson.fromJson(json, Map.class);
它返回类型为com.google.gson.internal.LinkedTreeMap的Map,并对嵌套对象递归地工作。
其他回答
如果你使用org。JSONObject有一个toMap()方法。 你可以轻松做到:
Map<String, Object> myMap = myJsonObject.toMap();
使用GSON库:
import com.google.gson.Gson;
import com.google.common.reflect.TypeToken;
import java.lang.reclect.Type;
使用以下代码:
Type mapType = new TypeToken<Map<String, Map>>(){}.getType();
Map<String, String[]> son = new Gson().fromJson(easyString, mapType);
我喜欢图书馆。 当你不知道json的结构。你可以使用
JsonElement root = new JsonParser().parse(jsonString);
然后你可以使用json。例如,如何从你的gson中获取"value1":
String value1 = root.getAsJsonObject().get("data").getAsJsonObject().get("field1").getAsString();
试试下面的代码:
public static Map<String, Object> convertJsonIntoMap(String jsonFile) {
Map<String, Object> map = new HashMap<>();
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
mapper.readValue(jsonFile, new TypeReference<Map<String, Object>>() {
});
map = mapper.readValue(jsonFile, new TypeReference<Map<String, String>>() {
});
} catch (IOException e) {
e.printStackTrace();
}
return map;
}
使用谷歌的Gson 2.7(可能是更早的版本,但我测试了2.7),它很简单:
Map map = gson.fromJson(json, Map.class);
它返回类型为com.google.gson.internal.LinkedTreeMap的Map,并对嵌套对象递归地工作。