2015-08-26 3 views
0

Какова наилучшая практика десериализации JSON для класса Case Scala с использованием json-линз?Как десериализовать json с json-линзами

some.json:

[ 
    { 
    "id": 1, 
    "name": "Alice" 
    }, 
    { 
    "id": 2, 
    "name": "Bob" 
    }, 
    { 
    "id": 3, 
    "name": "Chris" 
    } 
] 

некоторый случай класс:

case class Foo(id: Long, name: String) 

Что лучший способ преобразовать JSON в some.json в List[Foo]?

ответ

0

JSON-линзы поддерживает spray-json и с распылением JSON можно сделать:

import spray.json._ 

case class Foo(id: Long, name: String) 

object JsonProtocol extends DefaultJsonProtocol { 
    implicit val FooFormat = jsonFormat2(Foo) 
} 

import JsonProtocol._ 
val source = scala.io.Source.fromFile("some.json") 
val json = try source.mkString.parseJson finally source.close() 

json.convertTo[List[Foo]] 
// List[Foo] = List(Foo(1,Alice), Foo(2,Bob), Foo(3,Chris)) 
Смежные вопросы