Sinds kort ben ik aan het spelen met Scala. Over het algemeen vind ik de syntax een stuk duidelijker dan bij Java en C#, maar soms kom je van die dingen tegen dat je denkt "kan dit niet veel eenvoudiger?" 
Voor Java heeft Google bijvoorbeeld de Gson library gemaakt. Converteren kan dan vrij eenvoudig:
Ga ik echter met Scala aan de slag, dan wordt vaak aangeraden om de Json library van het Play Framework te gebruiken. Dit leidt tot code als:
Je moet dus met implicit vals readers en writers maken, voordat je ook daadwerkelijk classes van en naar Json kunt vertalen. Althans, dat is wat ik er uit begrijp. Mijn code werkt ook, maar echt blij word ik er niet van
Althans, ik vind het wel cool dat ik het aan de praat heb gekregen, maar daar is dan alles mee gezegd
Nu lijkt het dus net alsof Java in dit geval handiger is. Dat kan natuurlijk niet!
Kortom, wat is de eenvoudigste manier in Scala om een class van en naar Json te vertalen? Zonder dat ik van te voren moet beschrijven hoe dit moet gebeuren?
Er zijn meerdere native Json libraries, maar het is mij niet duidelijk voor welke ik moet kiezen dus.
De spray-json library ziet er bijvoorbeeld al een stuk duidelijker uit ( https://github.com/spray/spray-json ), maar die is ook niet zo eenvoudig als Gson.
Alvast bedankt!
Voor Java heeft Google bijvoorbeeld de Gson library gemaakt. Converteren kan dan vrij eenvoudig:
Java:
1
2
3
4
5
6
7
8
| Persoon p = new Persoon(1, "Pietje", 33); Gson gson = new Gson(); // Naar Json String json = gson.toJson(p); // Van Json Persoon p2 = gson.fromJson(json, Persoon.class); |
Ga ik echter met Scala aan de slag, dan wordt vaak aangeraden om de Json library van het Play Framework te gebruiken. Dit leidt tot code als:
Scala:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| // Zodat de Json library personen kan lezen implicit val persoonReads = new Reads[Persoon] { def reads(js: JsValue): JsSuccess[Persoon] = { new JsSuccess(new Persoon( (js \ "id").as[Int], (js \ "naam").as[String], (js \ "leeftijd").as[Int] )) } } // Zodat de Json library personen kan schrijven implicit val persoonWrites = new Writes[Persoon] { def writes(p:Persoon) : JsValue = { Json.obj( "id" -> p.id, "naam" -> p.naam, "leeftijd" -> p.leeftijd ) } } // Naar Json val p = new Persoon(1, "Pietje", 33) val js = Json.toJson(p) // Van Json val p2 = js.as[Persoon] |
Je moet dus met implicit vals readers en writers maken, voordat je ook daadwerkelijk classes van en naar Json kunt vertalen. Althans, dat is wat ik er uit begrijp. Mijn code werkt ook, maar echt blij word ik er niet van
Nu lijkt het dus net alsof Java in dit geval handiger is. Dat kan natuurlijk niet!
Kortom, wat is de eenvoudigste manier in Scala om een class van en naar Json te vertalen? Zonder dat ik van te voren moet beschrijven hoe dit moet gebeuren?
Er zijn meerdere native Json libraries, maar het is mij niet duidelijk voor welke ik moet kiezen dus.
De spray-json library ziet er bijvoorbeeld al een stuk duidelijker uit ( https://github.com/spray/spray-json ), maar die is ook niet zo eenvoudig als Gson.
Alvast bedankt!
[ Voor 7% gewijzigd door Lethalis op 19-10-2014 10:37 ]
Ask yourself if you are happy and then you cease to be.