我需要在播放应用程序中解析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。
感谢。
答案 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+已经使用多年......)