Java Play框架中的Json响应字符编码
我有个问题,我需要你的帮助 我在一台服务器上工作,该服务器使用java版本的Play Framework v1.2.4,用于我的移动应用程序,Json响应中有一个问题 我总是使用视图来加密我的Json响应,但我意识到当我使用特殊字符(如ñ、\n、á、é等)时会出现问题,并且我的移动应用程序运行错误 代码如下:Java Play框架中的Json响应字符编码,java,json,playframework,playframework-1.x,Java,Json,Playframework,Playframework 1.x,我有个问题,我需要你的帮助 我在一台服务器上工作,该服务器使用java版本的Play Framework v1.2.4,用于我的移动应用程序,Json响应中有一个问题 我总是使用视图来加密我的Json响应,但我意识到当我使用特殊字符(如ñ、\n、á、é等)时会出现问题,并且我的移动应用程序运行错误 代码如下: { "id":${data[0]}, "messages": [ #{list items:data[1], as:'message'} {
{
"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);
JsonObject jsonOut=new JsonObject();
addProperty(“id”,conversation.id);
JsonArray JsonArray=新的JsonArray();
for(int i=0;i
我的问题是,我是否可以在视图中做一些事情,将变量正确解析为json格式,而无需手动操作,因为我有很多响应需要更改。json的默认编码是UTF-8。 Java的默认编码取决于语言环境
您需要确保运行Play的JVM也以Charset.defaultCharset()的形式运行UTF-8。JSON的默认编码是UTF-8。 Java的默认编码取决于语言环境
您需要确保运行Play的JVM也以Charset.defaultCharset()的形式运行UTF-8。编译器和编辑器都应该将其编码设置为“UTF-8”。Play框架和JSON已经使用UTF-8。属性文件应该是
\u…
编码的。错误可能存在于非Java文件中。编译器和编辑器都应将其编码设置为“UTF-8”。Play框架和JSON已经使用UTF-8。属性文件应该是\u…
编码的。错误可能存在于非Java文件中。使用模板呈现JSON字符串是。。。糟糕(无论如何,我应该在这里完成我的答案…)
JSON序列化程序通常负责正确的引号、转义特殊字符、接受类型、编码字符(如果需要)等。。。正如我所看到的,你的模板没有做到这一点
使用模板,您需要自己完成所有工作,如果您不完全了解JSON规范,您将被判失败。这不仅仅是在适当的位置粘贴${message.text}
换句话说:第二种方法总是比第一种好。使用模板呈现JSON字符串是。。。糟糕(无论如何,我应该在这里完成我的答案…) JSON序列化程序通常负责正确的引号、转义特殊字符、接受类型、编码字符(如果需要)等。。。正如我所看到的,你的模板没有做到这一点 使用模板,您需要自己完成所有工作,如果您不完全了解JSON规范,您将被判失败。这不仅仅是在适当的位置粘贴
${message.text}
换句话说:第二种方法总是比第一种好。但我的服务器已上载到Heroku服务器。我可以将默认编码设置为UTF-8吗?怎么做?但是我的服务器被上传到Heroku服务器上了。我可以将默认编码设置为UTF-8吗?怎么做?谢谢你的回答。我必须重做我所有的应用程序,但是知道正确的方法很好。谢谢你的回答。我必须重做我所有的应用程序,但知道正确的方法很好。