Skip to content

Instantly share code, notes, and snippets.

@virtualsafety
Last active July 8, 2021 06:27
Show Gist options
  • Save virtualsafety/86bb54ad413c8598ac6d799155ddd1f7 to your computer and use it in GitHub Desktop.
Save virtualsafety/86bb54ad413c8598ac6d799155ddd1f7 to your computer and use it in GitHub Desktop.
利用json4s解析json数据
import org.json4s._
import org.json4s.jackson.JsonMethods._
object ScalaJson {
def main(args: Array[String]): Unit = {
implicit val formats = DefaultFormats
case class Model(hello: String, age: Int)
val rawJson = """{"hello": "world", "age": 42}"""
val m1 = parse(rawJson).extract[Model]
println(m1)
println(m1.hello)
}
}
@virtualsafety
Copy link
Author

@virtualsafety
Copy link
Author

scala> import org.json4s._
scala> import org.json4s.jackson.JsonMethods._

scala> implicit val formats: Formats = DefaultFormats // Brings in default date formats etc.

scala> case class Child(name: String, age: Int, birthdate: Option[java.util.Date])
scala> case class Address(street: String, city: String)
scala> case class Person(name: String, address: Address, children: List[Child])

scala> val json = parse("""
{ "name": "joe",
"address": {
"street": "Bulevard",
"city": "Helsinki"
},
"children": [
{
"name": "Mary",
"age": 5,
"birthdate": "2004-09-04T18:06:22Z"
},
{
"name": "Mazy",
"age": 3
}
]
}
""")

scala> json.extract[Person]
res0: Person = Person(joe,Address(Bulevard,Helsinki),List(Child(Mary,5,Some(Sat Sep 04 18:06:22 EEST 2004)), Child(Mazy,3,None)))

scala> val addressJson = json \ "address" // Extract address object
scala> addressJson.extract[Address]
res1: Address = Address(Bulevard,Helsinki)

scala> (json \ "children").extract[List[Child]] // Extract list of objects
res2: List[Child] = List(Child(Mary,5,Some(Sat Sep 04 23:36:22 IST 2004)), Child(Mazy,3,None))

@virtualsafety
Copy link
Author

`scala> import org.json4s._
scala> import org.json4s.jackson.JsonMethods._

scala> implicit val formats: Formats = DefaultFormats // Brings in default date formats etc.

scala> case class Child(name: String, age: Int, birthdate: Option[java.util.Date])
scala> case class Address(street: String, city: String)
scala> case class Person(name: String, address: Address, children: List[Child])

scala> val json = parse("""
{ "name": "joe",
"address": {
"street": "Bulevard",
"city": "Helsinki"
},
"children": [
{
"name": "Mary",
"age": 5,
"birthdate": "2004-09-04T18:06:22Z"
},
{
"name": "Mazy",
"age": 3
}
]
}
""")

scala> json.extract[Person]
res0: Person = Person(joe,Address(Bulevard,Helsinki),List(Child(Mary,5,Some(Sat Sep 04 18:06:22 EEST 2004)), Child(Mazy,3,None)))

scala> val addressJson = json \ "address" // Extract address object
scala> addressJson.extract[Address]
res1: Address = Address(Bulevard,Helsinki)

scala> (json \ "children").extract[List[Child]] // Extract list of objects
res2: List[Child] = List(Child(Mary,5,Some(Sat Sep 04 23:36:22 IST 2004)), Child(Mazy,3,None))`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment