我有简单的Json:
val str = """{"test":"123"}"""
如何将String
"123"
修改为Int
123
以获取新的Json?:
{"test":123}
现在我正在使用:
val json = parse(str).getOrElse(Json.Null)
val jsObj = json.asObject.get // Unsafe, just example
val newJson = Json.fromJsonObject(jsObj.remove("test").add("test", Json.fromInt(123)))
但是这段代码并不漂亮。
是否可以使此代码更漂亮,或者可以通过绕线光学系统来做到?
答案 0 :(得分:2)
它应该根据您要如何处理极限工况(在这里抛出异常)来解决问题:
import io.circe._
import io.circe.parser.parse
val str = """{"test":"123"}"""
val json = parse(str).getOrElse(Json.Null)
json.mapObject(
_.mapValues( v =>
v.asString
.flatMap(parse(_).toOption)
.getOrElse(throw new IllegalArgumentException("No String found"))
)
)