【问题标题】:How to iterate over JSValue parsed from JSON String如何遍历从 JSON 字符串解析的 JSValue
【发布时间】:2017-01-30 11:07:40
【问题描述】:

我有一个 JSON 字符串,

val name : String = "["Client_2","tClient_1","Client_NB"]"

我已使用 play 将 Json 字符串转换为 JSValue,如下所示

val json: JsValue  = Json.parse(cells)

json 输出:["IotClient_NB_2","IotClient_NB_1","IotClient_NB"]

我需要遍历上面的 JSON 字符串并取出字符串中的每个值。

【问题讨论】:

  • take string each value out 是什么意思?

标签: json scala playframework-2.0 scala-collections


【解决方案1】:

最简单的方法json.as[List[String]](如果json不是JsArray of String,则抛出异常)

例如

import play.api.libs.json.{JsValue, Json}

val name : String = """["Client_2","tClient_1","Client_NB"]"""
val json: JsValue  = Json.parse(name)
val list = json.as[List[String]]

import play.api.libs.json.{JsValue, Json}

scala> name: String = ["Client_2","tClient_1","Client_NB"]

scala> json: play.api.libs.json.JsValue = ["Client_2","tClient_1","Client_NB"]

scala> list: List[String] = List(Client_2, tClient_1, Client_NB)

【讨论】:

  • @andrey.ladniy感谢您的回答。我得到以下编译 [errorError:(65, 12) 在类文件“DefaultReads.class”中遇到的对 java.time 的错误符号引用。无法访问包 java 中的学期时间。当前类路径可能缺少 java.time 的定义,或者 DefaultReads.class 可能已针对与当前类路径中找到的版本不兼容的版本进行编译。 json.as[List[String]].foreach(println)]
  • 丢失或无效的导入(来自 java 而不是 scala 包)。示例在控制台中编译得很好。
  • 我建议在您的答案中添加所有必要的 import ... 语句。你的答案的读者会感谢你的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多