这会生成有效的json:
new JsonBuilder([test:'"']).toString()
这会生成无效的json(无法正常转义):
new JsonBuilder([test:'"']).toPrettyString()
我在环境中运行新JsonBuilder([test:'"']).toPrettyString()
时得到的输出(来自一个相当大的play-1.2.6应用程序中的处理程序):{\ n“test”:“”“\ n}这是无效的json。
当我运行Opal从命令行写的脚本时,我得到了有效的JSON(“\”而不是“”“),所以我不确定问题是什么。我使用的是Windows 7 64位(JDK 1.7.0_u67,groovy 2.3.6安装程序),但在我们的所有Linux机器上都遇到了这个问题
注意:这是由于使用旧版本的groovy(1.8.6)引起的,并且自2.3.6起修复。我无法升级,因为它是Play 1.2.6的依赖项。
答案 0 :(得分:1)
似乎两个输出都有效:
import groovy.json.*
def j1 = new JsonBuilder([test:'"']).toString()
def j2 = new JsonBuilder([test:'"']).toPrettyString()
println j1
println j2
def p1 = new JsonSlurper().parseText(j1)
def p2 = new JsonSlurper().parseText(j2)
assert p1 == p2