2016-08-24 30 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()方法的源代碼,它基本上完全符合您的建議。 – arosca

+0

這裏是我的測試代碼: '進口com.fasterxml.jackson.databind.ObjectMapper' '進口org.json4s._' '進口org.json4s.jackson.JsonMethods._' 'VAL jsonString = 「」 「{」 價格 「:10.8}」 「」'' VAL JSON =解析(jsonString)' 'VAL映射器=新ObjectMapper()'' mapper.writeValueAsString(JSON)//這works' 'VAL作家= mapper.writerWithDefaultPrettyPrinter()//拋出異常' 'val prettyJsonString = writer.writeValueAsString(json)' – arosca