我有以下字符串:
val jsonString: String = """{"additionalProperties":{},"annotation":{"type":"getDetails","docId":"doi:10.1186-s13612-016-0045-3","tags":{"wellbeing":7,"mood":6,"memories":6,"tmr":3,"participants":3},"additionalProperties":{}}}"""
我想提取tags
并将此字段转换为字符串。这就是我使用playframework的方式:
val parsedJson = Json.parse(jsonString)
val result = (parsedJson \ "tags").as[JsString].value
System.out.println(result)
此代码卡在第val result = (parsedJson \ "tags").as[JsString].value
行,并且不会返回任何错误消息。
因此我有两个问题:
"tags":{"wellbeing":7,"mood":6,"memories":6,"tmr":3,"participants":3}
答案 0 :(得分:0)
我不确定为什么你的代码卡住了。在我的环境中,它提供了一个很好的运行时异常。无论如何,你在这里基本上有两个问题:
<root>
对象的属性,而它实际上是annotation
对象的一部分。所以要提取它:parsedJson \ "annotation" \ "tags"
标记在JSON中编码为Object。 Play-json试图尽可能保持类型安全,这意味着你不能简单地“阉割”#34; JsObject
到JsString
。你可以在这里做的是将标签对象作为JsObject提取并使用其toString
函数。这会给你:
{"wellbeing":7,"mood":6,"memories":6,"tmr":3,"participants":3}
将其转换为所需的字符串应该是微不足道的。