数组示例:
[
{
"name": "John"
},
{
"name": "Joseph"
},
{
"name": "Peter"
}
]
我想过滤名称不以Jo
开头的对象:
[
{
"name": "John"
},
{
"name": "Joseph"
}
]
结果可能是其中包含json数组的String或JValue。
我无法在json4s中找到直接的JSON查询机制,因此创建了一个case类。映射JSON->过滤->写回JSON
import org.json4s.jackson.JsonMethods.parse
import org.json4s.jackson.Serialization
import org.json4s.native.Serialization.write
import org.json4s.{Formats, ShortTypeHints}
object JsonFIlter {
def main(args: Array[String]): Unit = {
implicit val formats: AnyRef with Formats = Serialization.formats(ShortTypeHints(List(classOf[PersonInfo])))
val parseJson :List[PersonInfo] = parse("""[
| {
| "name": "John"
| },
| {
| "name": "Joseph"
| },
| {
| "name": "Peter"
| }
|]""".stripMargin)
.extract[List[PersonInfo]]
val output = write(parseJson.filter(p => p.name.startsWith("Jo")))
println(output)
}
}
case class PersonInfo(name: String)