rot*_*erl 3 scala playframework
我正在使用Play framework 2.2.2.我正在尝试像这样处理json请求
[
{
"id" : "123",
"language" : "en",
"text" : "This is an example of a text",
"Metadata_IP" : "192.168.20.34",
"Metadata_date" : "2001-07-04T12:08:56.235-0700"
},
{
"id" : "124",
"language" : "en",
"text" : "Some more text here",
"Metadata_IP" : "192.168.20.31",
"Metadata_date" : "2001-07-04T12:09:56.235-0700",
"Metadata_name" : "someone"
}
]
Run Code Online (Sandbox Code Playgroud)
Metadata_字段是动态字段,意味着用户可以发送他想要的内容(例如,Metadata_color等...)处理此问题的最佳方法是什么?
我可以使用Readers将其反序列化为case class吗?我怎样才能做到这一点?我想动态字段将是Map [String,String],但是我应该如何让读者解析这个呢?
谢谢
像这样的东西可以工作:
implicit object jsObjToKeyValueSeq extends Reads[Seq[(String, String)]] {
override def reads(json: JsValue) = json match {
case js: JsObject =>
JsSuccess(js.fields.collect { case (key, JsString(value)) => key -> value })
case x => JsError(s"Unexpected json: $x")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |