2016-08-24 6 views
2

このコードスニペットは非常にうまく機能しますが、コンパクトなJSON(改行なし/人間が読めるわけではありません)を生成します。json4sでかなりのJSONを生成するにはどうすればよいですか?

import org.json4s.native.Serialization.write 
implicit val jsonFormats = DefaultFormats 

//snapshotList is a case class 
val jsonString: String = write(snapshotList) 

これでかなりのJSONを簡単に生成する方法はありますか?

私はこの回避策を持っているが、より効率的な方法が存在する場合、私は思ったんだけど:

import org.json4s.jackson.JsonMethods._ 
val prettyJsonString = pretty(render(parse(jsonString))) 

答えて

4
import org.json4s.native.Serialization.writePretty 

val jsonString: String = writePretty(snapshotList) 
0

あなたはObjectMapper writerWithDefaultPrettyPrinter functionを使用することができます。

ObjectMapper mapper = new ObjectMapper(); 
val pretty = mapper.writerWithDefaultPrettyPrinter() 
        .writeValueAsString(jsonString)); 

これは、あなたができるからObjectWriterオブジェクトを返します。きれいにフォーマットされた文字列を取得します。

+0

私はこのアプローチを試みたが、私は例外を取得しています: 'とjava.lang.ClassCastExceptionを:com.fasterxml.jackson.databind.ObjectWriterはscala.runtime.Nothing $' 行うにキャストすることはできませんあなたが理由を知っている? pretty()メソッドのソースコードを見ていて、基本的にはあなたが提案したものと全く同じです。 '輸入org.json4s._' '輸入org.json4s.jackson.JsonMethods._' 'ヴァルjsonString = "" '輸入com.fasterxml.jackson.databind.ObjectMapper': – arosca

+0

はここに私のテストコードです"{" 価格 ":10.8}" "" '' ヴァルJSON =パース(jsonString) ' 'ヴァルマッパー=新しいObjectMapper() '' mapper.writeValueAsString(JSON)は、//これは 'valのライターをworks' = mapper.writerWithDefaultPrettyPrinter()//例外をスローする ' ' val prettyJsonString = writer.writeValueAsString(json) ' – arosca

関連する問題