我们说我有val numOpen = 5
。
现在我有一个JsValue,其键值必须是numOpen的值:
StackOverflow说这篇文章的代码太多了,尽管它并不是真的很多。查看完整的JSON here。
如何在此JSON中插入Scala变量的值作为"值"的值?谢谢!
答案 0 :(得分:1)
将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}}
我不知道是否有更简单的方法可以做到这一点。