[英]Json response character encoding in Play Framework
我有問題,需要您的幫助。
我正在使用用於移動應用程序的Java中具有Play Framework v1.2.4的服務器,並且在Json響應中有問題。
我一直使用視圖來表示我的Json響應,但是我意識到,當我使用特殊字符(如ñ,\\ n,á,é等)時,會出現問題,並且我的移動應用程序運行有誤。
這是代碼:
{
"id":${data[0]},
"messages":
[
#{list items:data[1], as:'message'}
{
"text":"${message.text}"
}${message_isLast ? '' : ','
}#{/list}
] }
我嘗試使用java方法來正確解析響應,而不是在.json視圖中解析它,並且可以。 那是代碼:
JsonObject jsonOut = new JsonObject();
jsonOut.addProperty("id",conversation.id);
JsonArray jsonArray = new JsonArray();
for(int i = 0; i < conversation.messages.size; i++) {
Message message = conversation.messages.get(i);
JsonObject jsonMessage = new JsonObject();
jsonMessage.addProperty("text", message.text);
jsonArray.add(jsonMessage);
}
jsonOut.add("messages", jsonArray);
renderText(jsonOut);
我的問題是,我是否可以在視圖中執行某些操作以將變量正確解析為json格式而無需手動進行,因為我必須更改很多響應。
使用模板來呈現JSON字符串是很糟糕的(無論如何,我應該在這里完成答案)。
JSON序列化程序通常會注意正確的引號,轉義特殊字符,榮譽類型,對字符進行編碼(如果需要)等...據我所知,您的模板不會這樣做。
使用模板,您需要自己做所有事情,如果您不完全了解JSON規范,則定罪失敗。 這不只是將${message.text}
粘貼在適當的位置...
換句話說:您的第二種方法將永遠比第一種更好。
JSON的默認編碼為UTF-8。 Java的默認編碼取決於語言環境。
您需要確保運行Play的JVM還以Charset.defaultCharset()的形式運行UTF-8。
編譯器和編輯器均應將其編碼設置為“ UTF-8”。 Play框架和JSON已使用UTF-8。 屬性文件應使用\\u....
編碼。 該錯誤可能出在非Java文件中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.