【发布时间】:2016-02-17 02:42:58
【问题描述】:
我正在用 Java 解析来自 REST API 的 JSON 响应,但我不想为每个响应创建一个 Java 类 (POJO)(响应具有不同的数据结构和字段)。 Java 中是否有更通用的 JSON 解析器,类似于 JavaScript 的简单语法?
下面的 JSON 只是众多 REST 端点之一的结果
{
"f1" : "volume",
"f2" : "gender",
"f3" : "days",
"f4" : [{
"id" : "F",
"name" : "female",
"values" : [{
"name" : "September",
"value" : 12
}
]
}, {
"id" : "M",
"name" : "male",
"values" : [{
"name" : "September",
"value" : 11
}
]
}
]
}
在 JavaScript 中,访问女性的值:
jsonRoot.f4[0].values[0].value
这比创建大量 Java 类要简洁。您能否提出类似的建议或避免创建许多 POJO 的方法?
【问题讨论】:
-
是的,使用 Jackson 这样的库。
-
@duffymo 根据上面的例子,你能举一个在杰克逊如何做到这一点的例子吗?我在网上看到的例子仍然使用Java类。
-
如果您使用 ScriptEngine,那么您可以在 Java 中使用 JavaScript(如果您愿意的话)。
-
当然,将其解析为 JSONObject。或者试试 JDK8 本身内置的 Nashorn JavaScript 引擎。你的一些努力将是值得注意的。
-
@duffymo 无法使用JDK8,我们的环境暂时限制在7。不过,如果可以将 Nashorn 插入到 7 中,它将调查它。
标签: javascript java json