Skip to content

Instantly share code, notes, and snippets.

@satendrakumar
Last active February 12, 2019 06:32
Show Gist options
  • Select an option

  • Save satendrakumar/bbcc04f49ab9a656a6dfebaa4b080f5a to your computer and use it in GitHub Desktop.

Select an option

Save satendrakumar/bbcc04f49ab9a656a6dfebaa4b080f5a to your computer and use it in GitHub Desktop.
Scala Utility class for parsing and writing Json(Write once and use everywhere )
import org.json4s._
import org.json4s.native.{JsonMethods, Serialization}
object JsonUtility {
implicit val formats = DefaultFormats
def write[T <: AnyRef](value: T): String = Serialization.write(value)
def parse(value: String): JValue = JsonMethods.parse(value)
}
case class Person(name: String, email: String, age: Int)
object JsonApp extends App {
import JsonUtility._
/**
* case class to json conversion
*/
val person: Person = Person("bob", "[email protected]", 21)
val personJson: String = write(person)
println(personJson) // output => {"name":"bob","email":"[email protected]","age":21}
/**
* Json to case class conversion
*/
val jsonData =
"""{"name":"rob","email":"[email protected]","age":25}"""
val personFromJson: Person = parse(jsonData).extract[Person]
println(personFromJson) // output => Person(rob,[email protected],25)
/**
* List of case class to json conversion
*/
val persons = List(Person("bob", "[email protected]", 21), Person("rob", "[email protected]", 25), Person("joy", "[email protected]", 35))
val personsJson = write(persons)
println(personsJson) // output => [{"name":"bob","email":"[email protected]","age":21},{"name":"rob","email":"[email protected]","age":25},{"name":"joy","email":"[email protected]","age":35}]
}
//sbt dependency
// "org.json4s" %% "json4s-native" % "3.5.0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment