转换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吗?或者如果我自己编写解析器会更好?
当前回答
试试下面的代码:
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;
}
其他回答
我喜欢图书馆。 当你不知道json的结构。你可以使用
JsonElement root = new JsonParser().parse(jsonString);
然后你可以使用json。例如,如何从你的gson中获取"value1":
String value1 = root.getAsJsonObject().get("data").getAsJsonObject().get("field1").getAsString();
import net.sf.json.JSONObject
JSONObject.fromObject(yourJsonString).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);
试试这段代码,对我很管用,
Map<String, Object> retMap = new Gson().fromJson(
myJsonString, new TypeToken<HashMap<String, Object>>() {}.getType()
);
使用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));
}