切断JSON字符串中的字段

时间:2016-11-30 09:20:39

标签: json scala

我有一个像这样的JSON字符串:

{"id":"111","name":"abc","ids":["740"],"data":"abc"}

我想切断字段"ids",但我不知道像["740"]这样的值。所以,它可能是例如["888,222"]或其他什么。目标是获取没有字段"ids"的json字符串。

怎么做?我应该使用JackMapper吗?

修改

我尝试将JackMapper用作JacksMapper.readValue[Map[String, String]](jsonString)to get only fields that I need. But the problem is that" ids":[" 740"]`抛出解析错误因为它是一个数组。因此,我决定在解析之前切断这个字段,虽然它是一个丑陋的解决方案,理想情况下我只是想将json字符串解析为Map。

1 个答案:

答案 0 :(得分:2)

不确定JackMapper是什么,但如果允许其他库,我个人最喜欢的是:

Play-JSON

val jsonString = """{"id":"111","name":"abc","ids":["740"],"data":"abc"}"""
val json = Json.parse(jsonString).as[JsObject]
val newJson = json - "ids"

Circe:

import io.circe.parser._

val jsonString = """{"id":"111","name":"abc","ids":["740"],"data":"abc"}"""
val json = parse(jsonString).right.get.asObject.get // not handling errors
val newJson = json.remove("ids")

请注意,这是让您前往不会处理错误输入等的最小示例。