我有一個非常簡單的例子:如何序列化帶有UTF-8字符的json4s的JSON?
import org.json4s._
import org.json4s.native.JsonMethods._
import org.json4s.JsonDSL._
val json = ("english" -> JString("serialization")) ~ ("japanese" -> JString("シリアライゼーション"))
println(pretty(render(json)))
我走出那就是:
{
"english":"serialization",
"japanese":"\u30b7\u30ea\u30a2\u30e9\u30a4\u30bc\u30fc\u30b7\u30e7\u30f3"
}
我想是這樣的(完全有效的據我所知)JSON:
{
"english":"serialization",
"japanese":"シリアライゼーション"
}
我現在找不到它,但我想我已經讀過JSON只需要兩個特殊的UTF-8字符的地方。
查看render的編碼,看起來Strings always get this extra double-escaping for non-ASCII characters。
任何人都知道如何才能獲得有效的JSON而不會雙重轉義所有UTF-8擴展字符?這似乎是一個非常類似的問題:Why does the PHP json_encode function convert UTF-8 strings to hexadecimal entities?
更新:原來,這是一個懸而未決PR #327 json4s一個開放的問題,這是有利於PR #339關閉這反過來又合併到3.4版本分支在commit on Feb 13, 2016。
我不知道_json4s_,但[RFC 7159](https://tools.ietf.org/html/rfc7159)表示UTF-8是JSON的默認編碼。所以從理論上說,沒有必要(只有一種選擇)逃避日文字符。您只需要一個庫或者可以配置相應的庫。 – kriegaex