不知道是不是jfinal的bug
Person p = new Person(); p.setName("zhangsan"); p.setPhoto("img/zhangsan.png"); renderJson(p); 输出结果: {"name":"zhangsan","photo":"img/zhangsan.png"} 其中 img/zhangsan.png 多了一个“” 改成gson转换正常,这个算不算jfinal的一个bug呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
呵呵,呵呵。。
A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. A character is represented as a single character string. A string is very much like a C or Java string.
确实是json的规范。转义后,如果不是用js解析的话,还需要对"/"过滤一次,"/" 不转义也并不影响结果。个人比较偏向不转义。
http://json.org 给出的json规范是需要对 "/" 转义成 "/",所以 jfinal 的 JsonKit 做了这个转换,不过 gson、jackson 并没有遵守这个规范,网上有一些文章对此字符是否要转换也说法不一, jfinal 2.1 会再次对此问题进行权衡考虑。
最后,即便是进行了转义,在浏览器这端的 js 中使用 json 数据是没有问题的,可以被识别。
不是bug
是转义的问题,我是想输入什么就输出什么,试了下gson,没有这个问题。
回复
用jfinal的时候你是在浏览器响应里看的数据的话,是转义的,在预览里是正常的,用js取json属性肯定也是正确的,没有多余字符。你用gson测试应该是直接在ide的控制台输出的吧,那和渲染到网页页面一样,是正常的,测试的环境不同。
回复
都是用浏览器请求的结果
这个本身就是一个转义字符,/就表示/,网络间传输时肯定会转义的,你把它放到对象里,然后debug查看就知道了,比如\就是,'就是'等等,和jfinal没多大关系,jfinal基本上是很原生态的封装。