Mat*_*ska 9 json scala playframework
我正在使用Play 2.1 JSON Reads来实现条件转换.
我有一个json对象,我想转换一个可选字段删除\n字符.问题是,如果我从发送的JSON中删除内容,我得到验证错误.
该字段是可选的,我不知道如何描述转换是可选的.这是当前的内容转换:
val transformContent = (__ \ 'content).json.update(__.read[JsString].map{
value =>
JsString(value.value.replaceAll("\n", ""))
})
Run Code Online (Sandbox Code Playgroud)
如何获得可选的字段转换?我应该用Reads.verifyingIf吗?
谢谢
你可以这样做:
val json = Json.obj("whatever" -> 1, "content" -> "hello world")
val json2 = Json.obj("whatever" -> 1)
val transformer = (__ \ 'content).json.update(
__.readOpt[JsString].map{
case Some(JsString(str)) => JsString(str.replaceAll("world", "scala"))
}
).orElse(__.json.pick[JsObject])
json.transform(transformer)
//JsSuccess({"whatever":1,"content":"hello scala"},)
json2.transform(transformer)
//JsSuccess({"whatever":1},)
Run Code Online (Sandbox Code Playgroud)
小hacky,但它的工作原理.
| 归档时间: |
|
| 查看次数: |
2137 次 |
| 最近记录: |