【发布时间】:2014-08-21 19:13:52
【问题描述】:
假设我有val numOpen = 5。
现在我有一个 JsValue,它有一个键,其值需要是 numOpen 的值:
StackOverflow 说这篇文章的代码太多了,尽管实际上并不是很多。查看完整的 JSON here。
如何在这个 JSON 中插入 Scala 变量的值作为“值”的值?谢谢!
【问题讨论】:
标签: json scala playframework
假设我有val numOpen = 5。
现在我有一个 JsValue,它有一个键,其值需要是 numOpen 的值:
StackOverflow 说这篇文章的代码太多了,尽管实际上并不是很多。查看完整的 JSON here。
如何在这个 JSON 中插入 Scala 变量的值作为“值”的值?谢谢!
【问题讨论】:
标签: json scala playframework
将JsObject 播放为++ 方法,您可以强制转换JsValue 并更新字段:
val numOpen = 5
var data1: JsValue = Json.parse( """
{
"value": 64, // THIS REALLY NEEDS TO BE "value" : numOpen
"color":"#F7464A",
"highlight": "#FF5A5E",
"label": "Open"
}
""")
val t: JsObject = data1.as[JsObject] ++ Json.obj("value" -> numOpen)
如果需要,您可以将其转换回 JsValue:
t.as[JsValue]
如果您有嵌套值,我知道的唯一方法是使用嵌套 Json.obj
var data1: JsValue = Json.parse( """
{
"value": 64,
"color":"#F7464A",
"highlight": "#FF5A5E",
"label": {
"value": 54
}
}
""")
val t: JsObject = data1.as[JsObject] ++ Json.obj("label" -> Json.obj("value" -> 5))
println(t.as[JsValue].toString())
输出:
{"value":64,"color":"#F7464A","highlight":"#FF5A5E","label":{"value":5}}
我不知道是否有更简单的方法来做到这一点。
【讨论】:
var data1 是由 3 组值、颜色、突出显示和标签组成的列表。我不确定如何更新特定集合的值。
as[JsArray] 访问该值,但很难用更改后的值重建 Json,可能其他人有更好的主意。