First Way:
Perquisite:
Add below dependencies in build.sbt
//************************************************************
libraryDependencies += "net.liftweb" %% "lift-json" % "3.4.0" libraryDependencies += "io.spray" %% "spray-json" % "1.3.5"//***************************************************************import scala.util.parsing.json.JSON object test1 extends App {/* Give location of any type of json file*/val input_file = "json.json" val json_content = scala.io.Source.fromFile(input_file).mkString val json_data = JSON.parseFull(json_content) println(json_data) }File name: json.json{ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": { "GlossEntry": { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": { "para": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": ["GML", "XML"] }, "GlossSee": "markup" } } } } }
Second Way:
//Outputimport scala.io._ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object Main { def main(args: Array[String]): Unit = { val filename = args.head // read println(s"Reading ${args.head} ...") val json = Source.fromFile(filename) // parse val mapper = new ObjectMapper() with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) val parsedJson = mapper.readValue[Map[String, Object]](json.reader()) println(parsedJson) } }Note: pass filename with Absolute path as a argument.
Reading C:/Users/admin/Desktop/JSON_FOLDER/Scala_Json/json.json ... Map(glossary -> Map(title -> example glossary, GlossDiv ->
Map(title -> S, GlossList -> Map(GlossEntry ->
Map(ID -> SGML, Acronym -> SGML, GlossDef ->
Map(para -> A meta-markup language,
used to create markup languages such as DocBook., GlossSeeAlso -> List(GML, XML)),
SortAs -> SGML, GlossSee -> markup, Abbrev -> ISO 8879:1986, GlossTerm ->
Standard Generalized Markup Language)))))
Third Way:
import net.liftweb.json.DefaultFormats import net.liftweb.json._ // a case class to match the JSON datacase class EmailAccount( accountName: String, url: String, username: String, password: String, minutesBetweenChecks: Int, usersOfInterest: List[String] ) object ParseJsonArray extends App { implicit val formats = DefaultFormats // a JSON string that represents a list of EmailAccount instances val jsonString ="""{ "accounts": [ { "emailAccount": { "accountName": "GMail","username": "divyanshu.singh@company.com", "password": "@12345","url": "www.gmail.com", "minutesBetweenChecks": 1,"usersOfInterest": ["Divyanshu", "shekhar", "singh"] }},{ "emailAccount": { "accountName": "Gmail","username": "singh.shekhar@gmail.com", "password": "2345678","url": "www.gmail.com", "minutesBetweenChecks": 1,"usersOfInterest": ["DSS", "Dss1"] }}]} """ // json is a JValue instance val json = parse(jsonString) val elements = (json \\ "emailAccount").children for (acct <- elements) { val m = acct.extract[EmailAccount] println(s"Account: ${m.url}, ${m.username}, ${m.password}") println(" Users: " + m.usersOfInterest.mkString(",")) } } //Output//Account: www.gmail.com, divyanshu.singh@company.com, @12345// Users: Divyanshu,shekhar,singh
//Account: www.gmail.com, singh.shekhar@gmail.com, 2345678
// Users: DSS,Dss1
No comments:
Post a Comment