有没有办法将复杂的JSON转换为对象而不创建POJO?

时间:2014-02-22 02:20:07

标签: java

我想将JSON-String转换为对象。通常我创建一个POJO并将字符串转换为GSONJSONObject到我的POJO。但有没有更好的地方我不需要创建POJO?

目标是获取一个对象,我可以以任何方式访问JSON的键和值...,例如jsonObject.getKey(“foo”)。getProperty(“bar”)..或者其他:D

1 个答案:

答案 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 JsonObjectList JsonArray来实现。它提供了包装器来访问元素作为更多JsonObjectJsonArrayJsonNull和/或JsonPrimitive实例。