2017-12-11 8 views
0


인터페이스의 형태를 직렬화. 나는 스프레이 - JSON을 처음 접했을 때 이것이 어떻게 직렬화되고 비 직렬화 될 수 있는지 모르겠습니다. 스프레이 JSON은 어떻게 여기 <pre><code>case class Vegetable(name: String, color: String, seller:ISeller) </code></pre> <p>ISeller 자바 인터페이스 클래스</p> 다음 직렬화 할 수 스프레이 JSON을 사용하여

나는이 시도하지만 런타임 오류

implicit val VegetableFormat = jsonFormat3(Vegetable) 

여기에 어떤 포인터가 잘됩니다 제공합니다.

답변

0

ISeller 개체의 JSON 변환/변환 방법을 정의해야합니다. 당신이 코드 또한 는 같은 ISeller에 대한 포맷터를 정의 할 필요가 제공하는 다음

implicit object ISellerJsonFormat extends RootJsonFormat[ISeller] { 
    def write(c: ISeller) = JsNull 

    def read(value: JsValue) = null 
    } 

vegetable.toJson 생산 할 수 있도록 바로 위의 조각은 ISeller을 무시 :

{"name":"Onion","color":"red","seller":null} 

을 읽으려는 경우/좀 더 복잡한 논리를 구현할 수있는 의미있는 것을 작성하십시오. https://github.com/spray/spray-json의 "다른 유형의 JsonFormats 제공"절을 참조하십시오.

+0

감사합니다. 그러나 ISellerJsonFormat은 어디에 정의해야합니까? – Sandeep

+0

vegetableFormat 정의 이전에 동일한 소스 파일에서 정의 할 수 있습니다. – igorpcholkin