Scala 和 json4s:如何过滤 json 数组
Scala & json4s: How do I filter a json array
数组示例:
[
{
"name": "John"
},
{
"name": "Joseph"
},
{
"name": "Peter"
}
]
我想过滤掉名称不以 Jo
:
开头的对象
[
{
"name": "John"
},
{
"name": "Joseph"
}
]
结果可能是一个 String 或 JValue,其中包含 json 数组。
我无法在 json4s 中找到直接的 JSON 查询机制,因此创建了一个案例 class。
映射 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)
数组示例:
[
{
"name": "John"
},
{
"name": "Joseph"
},
{
"name": "Peter"
}
]
我想过滤掉名称不以 Jo
:
[
{
"name": "John"
},
{
"name": "Joseph"
}
]
结果可能是一个 String 或 JValue,其中包含 json 数组。
我无法在 json4s 中找到直接的 JSON 查询机制,因此创建了一个案例 class。 映射 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)