2014-11-29 4 views
0

Json 객체를 디스크에서 읽고 쓸 수 있어야합니다.디스크의 스프레이 json 객체에 쓰거나 읽는 방법은 무엇입니까?

나는 Java에서 10 분 정도 걸릴 것이라고 인정했다.

스칼라는 좀 더 도전적입니다. 주된 이유는 그물에 대한 충분한 정보가 아니라고 생각합니다.

어쨌든, 이것은 내가 지금까지 무엇을했는지 있습니다 :

package com.example 
 

 
import java.io.{BufferedWriter, FileWriter} 
 

 
import spray.json._ 
 
import spray.json.DefaultJsonProtocol 
 
import java.nio.file.{Paths, Files} 
 
import java.nio.charset.StandardCharsets 
 

 
object Test { 
 

 
    object Foo extends DefaultJsonProtocol { 
 
    implicit val fooFormat = jsonFormat2(Foo.apply) 
 
    } 
 

 
    case class Foo(name: String, x: String) { 
 
    //def toJson:JsValue = JsObject("name" -> JsString(name)) 
 
    } 
 

 

 
    def main(args: Array[String]) { 
 
    println("Hello, world!") 
 

 
    implicit val foo = new Foo("xxx", "jj") 
 

 
    println(foo.toJson) 
 

 
    val w = new BufferedWriter(new FileWriter("output.txt")) 
 
    w.write(x.toJson) // This doesn't work. I also tried: x.toJson.toString 
 
    } 
 
}

+1

코드가 컴파일되지 않습니다. 마지막 줄에'x'가 무엇입니까? JSON을'write' 또는'read'하려고합니까? –

+0

미안 Soumya, 의미는 : foo.toJson. 어쨌든,이 일을 : x.toJson.toString() – bashan

답변

1

아, 그건 실망. 나는 spray-json readme에 다이어그램을 제공하여 신참에게 도움이되기를 바랍니다. 그러나 당신은 여전히 ​​그 함축에 대해 무엇을해야하는지 알아야합니다.

Spray-json은 형식화를 사용하여 개체를 직렬화/역 직렬화합니다. typeclags를 읽을 수도 있지만 여기에서 중요한 것은 암시 적 JsonFormat 객체가 객체에서 사용하는 모든 클래스와 참조되는 객체의 범위에 있어야한다는 것입니다. DefaultJsonProtocol 특성에는 일반적인 Scala 유형에 대한 암시 적 JsonFormats가 포함되어 있으므로 사용자 고유의 형식에 대한 자체 암시 적 JsonFormats를 제공해야합니다. jsonFormat1,2, ... 메소드는 케이스 클래스를위한 JsonFormats를 쉽게 생성 할 수있는 방법을 제공합니다.

프로그램에 여러 가지 문제가 있습니다. 다음은 작동하는 간단한 코드입니다.

import spray.json._ 
import java.io.{BufferedWriter, FileWriter} 

object Test extends App with DefaultJsonProtocol { 
    case class Foo(name: String, x: String) 
    implicit val fooFormat = jsonFormat2(Foo.apply) 
    val foo = Foo("xxx", "jj") 
    println(foo.toJson) 
    val w = new BufferedWriter(new FileWriter("output.txt")) 
    w.write(foo.toJson.prettyPrint) 
    w.close 
} 
+0

고마워요 AmigoNico. "readme"는 훌륭하게 보입니다. 나는 단지 그것을 보지 못했다. 그것은 모든 파일과 함께 다소 잃어 버렸습니다 ... :) – bashan

+0

당신의 수정도 훌륭해 보입니다. 고마워요 :) – bashan

+0

기쁘게 도와, 바산. 행운을 빕니다. – AmigoNico