使用play libs解析json响应

时间:2014-03-02 14:37:04

标签: java json playframework-2.0

我需要在播放应用程序中解析json响应并获取列表中的所有字段/值。

我得到的回复如下:

WSRequestHolder request = WS.url("someurl");
request.setQueryParameter("somekey", "somevalue");
Promise<Response> promise = request.get();
Response response = promise.get();
JsonNode json = response.asJson();

响应如下:

{"results":{"key1":value1,"key2":value2,"key3":value3},"errorMessage":"","statusCode":2000,"success":true,"version":"1.01"}

我需要从&#34;结果&#34;中获取所有的场地/价值观。名单。我怎样才能使用play json libraries / apis?我正在使用play 2.1.1。

感谢。

1 个答案:

答案 0 :(得分:0)

由于结果为JsonNode,因此您可以获得JsonNode的所有细节。

例如,如果您想访问"results",请执行:

JsonNode results = json.get("results");

您还拥有.has().path().entries()等方法等。一个JsonNode可以表示任何JSON值,包括null。< / p>

要测试类型,您可以使用.is*()方法:.isObject().isNumber().isMissing()(注意:后者需要使用.path()代替.get())。

示例:

json.path("foo").isMissing(); // true
json.path("errorMessage").getTextValue(); // ""
json.get("results").get("key2"); // value2
json.get("success").getBooleanValue(); // true

等等。请参阅the javadoc for JsonNode

另一个解决方案是将JSON反序列化为POJO。但这意味着首先创建POJO,然后使用ObjectMapper.read*()值。

(旁注:令人惊讶的是Play使用Jackson 1.9.x而2.0+已经使用多年......)