Though it is a 4-year-old question, I wanted to give another look at the problem because converting JSON document structure is universal.
Parsing a JSON document with all fields requires a substantial amount of work. but if you don't need all the fields and the part you need is not changing, then this would be the way to extract the data needed.
var json= """{"a1":"b","c1":"d","e1":{"f1":"g","h1":"i","j1":"k"}}"""
implicit val formats = org.json4s.DefaultFormats
data=parse(json)
val a1 = (data \ "a1").extract[String]
val c1 = (data \ "c1").extract[String]
val e1 = data \ "e1"
val f1 = (e1 \ "f1").extract[String]
val h1 = (e1 \ "h1").extract[String]
val j1 = (e1 \ "j1").extract[String]
val e1 = data \ "e1"
gives clue on how to handle sub objects.
@Learner's answer has a few key points though. we need a stringified JSON data to start with and we can use predefined classes if the data structure is not changing.
Remembering JSON has limited number of data types, this can be an easy task for small structures but the flexibility of JSON will make it hard when the structure grows big. Then you will either need to give up the flexible data or work hard for writing extractor classes for deep/complex data.