【发布时间】:2014-02-27 08:26:14
【问题描述】:
在使用正文解析器 parse.json 将 JSON(作为应用程序/json 内容类型)提交到播放框架操作时遇到问题,其中 JSON 包含版权符号。
失败的 JSON 是:
{
"Test": "©"
}
返回的错误信息是400,Bad Request [Invalid Json]
我相信这应该可行,我检查过的所有 JSON 验证器都说这应该是有效的 JSON。有没有办法调试/跟踪正在崩溃的游戏,或者有人有什么想法吗?我的下一步是在客户端对其进行 HTML 编码,但我认为这不是必需的,而且我担心将来会导致兼容性问题(因为这似乎是有效的)。
我正在使用以下 curl 命令提交:
curl localhost:9001/index -H "Content-Type:application/json;charset=UTF-8" -d @failingJson.txt
注意:我重新尝试(为了重现性)将其直接从网站复制到 txt 文件并提交,同样的问题。这有可能与一些无法识别的 UTF-8 字符有关,但有没有办法真正找出 Play 崩溃的原因?
另外,它在我的代码之前就已经崩溃了,它在框架中的某个地方。
有什么想法吗?
编辑 1:
实际使用的是 Play 2.2,而不是 Play 2.1
编辑 2: 这基本上是控制器的样子:
def addItem() = Action.async(parse.json) { request =>
//Do Stuff
}
还有路线:
POST /index controllers.IndexController.addItem()
编辑 3: 而且,为了超级清楚,这很好用:
{
"Test": "©"
}
【问题讨论】:
-
嗯,您提供的 json 没有出现此错误。您是否尝试将
Content-Type标头更改为application/json;charset=UTF-8? -
是的,我正在使用 playframework 2.2,但我不知道这是否重要
-
您如何发送测试 JSON 请求?如果您发布更多代码可能会有所帮助。
-
是的,很好,我会添加一些细节
标签: json scala playframework