當我嘗試使用Scala/Spray的第一步時,遇到了一個問題,正確處理了噴碼json中的unicode。在Spray-json中處理Unicode,並重寫JsonPrinter
例如:á是在json中生成的。生成的頭文件指示UTF-8以及適當的設置auf -Dfile.encoding = UTF-8,它在Scala的System.properties中顯示UTF-8。
我發現了一個可能的解決方案here
但我羞愧地承認我不知道如何實現這一點,因爲我並沒有直接adressing的JsonPrinter。 這裏是我有:
JsonProtocol:
object PersonJsonProtocol extends DefaultJsonProtocol {
implicit object PersonJsonFormat extends RootJsonFormat[Person] {
def write(per: Person) = JsObject(
"name" -> JsString(per.name),
"surname" -> JsString(per.surname),
"addresses" -> JsArray(per.addresses.toList.map(_.toJson))
)
簡單映射在Person類:路線內
val simple = {
get[String]("person_code") ~
get[String]("name") ~
get[String]("surname") map {
case person_code~name~surname =>
new Person(person_code, name, surname, adressDao.findAll(person_code))
}
}
DB電話:
ctx: RequestContext => ctx.complete(StatusCodes.OK, personDAO.findAll())
所以我的問題是,我怎麼能覆蓋JsonPrinter中的printString方法。 我將不勝感激任何幫助。先謝謝你!
對於後人來說,這是spray-json中的相關問題,需要解決https://github.com/spray/spray-json/issues/46。 –
@DaveSwartz謝謝。所以唯一的辦法似乎是找到一個非官方的解決方法。 – Klink