我想将JSON-String转换为对象。通常我创建一个POJO并将字符串转换为GSON
或JSONObject
到我的POJO。但有没有更好的地方我不需要创建POJO?
目标是获取一个对象,我可以以任何方式访问JSON的键和值...,例如jsonObject.getKey(“foo”)。getProperty(“bar”)..或者其他:D
答案 0 :(得分:2)
大多数JSON解析器/生成器库都为JSON types中的每一个都有一个类型。
Gson有JsonElement
及其子类型。这是一个可以链接呼叫的示例。
public static void main(String[] args) throws Exception {
String jsonString = "{\"property1\":\"someValue\", \"arrayProperty\":[{\"first\":1234, \"second\":-13.123}, {\"nested\":\"so deep\"}], \"finally\":\"last\"}";
Gson gson = new Gson();
JsonElement element = gson.fromJson(jsonString, JsonElement.class);
System.out.println(element);
JsonObject jsonObject = element.getAsJsonObject(); // should test type before you do this
System.out.println(jsonObject.get("arrayProperty").getAsJsonArray().get(0));
}
打印
{"property1":"someValue","arrayProperty":[{"first":1234,"second":-13.123},{"nested":"so deep"}],"finally":"last"}
{"first":1234,"second":-13.123}
以上内容或多或少通过LinkedTreeMap
JsonObject
和List
JsonArray
来实现。它提供了包装器来访问元素作为更多JsonObject
,JsonArray
,JsonNull
和/或JsonPrimitive
实例。