Advertisement
ZivkicaI

JSon

Dec 12th, 2019
622
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 4.15 KB | None | 0 0
  1. package ExercisesScala.Vezbi
  2.  
  3. import play.api.libs.json.{JsBoolean, JsError, JsNumber, JsObject, JsString, JsSuccess, JsValue, Json, Reads, Writes}
  4.  
  5. object JSON extends App{
  6.  
  7.   val input2: String ="""{
  8.    "Drzava":{
  9.    "ime" : "Makedonija",
  10.    "gradovi" : [{
  11.      "ime": "Skopje",
  12.      "ZIP" : 1000,
  13.      "ulici": ["Todor Aleksandrov", "Socijalistichka Zora", "Josif Kovacev"],
  14.      "populacija" : 100000
  15.    }],
  16.    "populacija":2000000,
  17.    "EU" : false
  18.  }
  19.  }""" // ova ni stasuva na input ROJSon
  20.  
  21.  
  22.  
  23.   val obj3: JsObject =Json.obj("ime" -> JsString("Makedonija"),
  24.                                                   "gradovi" -> Seq(Json.obj(
  25.                                                        "ime" -> JsString("Skopje"),
  26.                                                       "zip" -> JsNumber(1000),
  27.                                                       "ulici" -> Seq("Todor Aleksandrov", "Socijalistichka Zora", "Josif Kovacev"),
  28.                                                       "populacija" -> JsNumber(100000)),
  29.                                                     Json.obj(
  30.                                                     "ime" -> JsString("Prilep"),
  31.                                                       "zip" -> JsNumber(1200),
  32.                                                      "ulici" ->Seq("UlicaMica", "Petar Arsov", "Goce Delchev"),
  33.                                                       "populacija" -> JsNumber(45000)
  34.                                                   )),
  35.                                                   "populacija" -> JsNumber(2000000),
  36.                                                   "eu" -> JsBoolean(false))//vaka se pravi RoJson
  37.  
  38.   def stringToJSObject(str : String): JsObject = {
  39.     Json.parse(str).as[JsObject]  //1.NACHIN konvertnat string vo JsObject, prvo so parse na Stringot za da imam namesto String JsValue pa posle JsObject
  40.   }
  41.   println(stringToJSObject(input2))
  42.  
  43.  
  44.   def simpleInputToJsObject(ime:String, prezime:String, age:Int): JsObject = {
  45.     Json.obj("ime" ->ime,
  46.       "prezime"-> prezime,
  47.       "age"-> age) //2.NACHIN zatoa shto inputot moze da bide daden vo razlichen format zatoa imame nachini da kreirame JsObject
  48.   }
  49.   println(simpleInputToJsObject("PRVO IME", "VTORO IME", 99))
  50.  
  51.  
  52.   println(obj3)
  53.  
  54.   case class Drzava(ime:String, gradovi:Seq[Grad], populacija: Int, eu:Boolean)
  55.  
  56.   case class Grad(ime:String, zip: Int, ulici: Seq[String], populacija: Int)
  57.  
  58.  
  59.   implicit val filterTasksReads: Reads[Grad] = Json.reads[Grad]
  60.   implicit val filterTasksReads2: Reads[Drzava] = Json.reads[Drzava]
  61.   implicit val GradnWrites = Json.writes[Grad]
  62.   implicit val DrzavaWrites =Json.writes[Drzava]
  63.  
  64.  
  65.   val u: JsObject = obj3.validate[Drzava] match {
  66.     case JsSuccess(d, _) => {
  67.       promeniIVrati(d)
  68.     }
  69.     case e: JsError => JsError.toJson(e) //ova go pravam od bezbednosni prichini za vo sluchaj da imam plus minus atribut ili dr ime na atributot da sum go zgreshila
  70.   }
  71.   println("OVA E BITNO ")
  72.   println(u)
  73.  
  74.   def promeniIVrati(drzava:Drzava):JsObject = {
  75.     val smenetiGradovi: Seq[Grad] = for (grad<-drzava.gradovi)
  76.     yield {
  77.       grad.copy(zip=50000) // za sekoj grad napravi kopija od gradovi so smeneto zip
  78.     }
  79.  
  80.     val drzava1=drzava.copy(gradovi = smenetiGradovi)
  81.     val json1 = Json.toJson(drzava1)
  82.      json1.as[JsObject] //tuka drzava1 ja imam konvertnato od case clasa vo object
  83.   }
  84.  
  85.  
  86.   val inp: String = """{"name":"John", "age":30, "city":"New York"}"""
  87.  
  88.   val jobj: JsValue =Json.parse(inp)
  89.  
  90.   println(jobj)
  91.  
  92.  
  93.   var obj: JsObject = Json.obj("name" -> "John",
  94.                                 "age"->"23",
  95.                                 "city"->"New York") //kreiram JSon obj i toa e identichno so toa shto go primam
  96.  
  97.  /* val podatociZaDrzava=obj3 \\"Drzava"
  98.   println(podatociZaDrzava)
  99.  
  100.   val imeGradovi=(obj3 \ "Drzava" \ "gradovi" \ "ime").asOpt[String]  //namesto as[String] pobezbedno e asOpt vo sluchaj da go pogreshime imeto na atributot asOpt nema da frli greshka kje vrati None
  101.   println(imeGradovi)
  102.  
  103.  
  104.   val ulici=(obj3 \ "Drzava"\ "gradovi" \ "ulici")
  105.   println(ulici)
  106.  
  107.     NAMESTO OVA SE KORISTAT CASE CLASSI
  108.     */
  109.  
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement