JSON 在 Grails 中解析
JSON parsing in Grails
在我的 grails 应用程序中,我正在调用第三方 REST api,其中 returns JSON 我可能将 HTML 内容作为 属性价值。例如,像这样:
{
"presentationData": {
"id": "123-45",
"placeholders": [
{
"transition": "fade",
"items": [
{
"name": "Text Item",
"objectData": "<font face=\"Palatino Linotype, Book Antiqua, Palatino, serif\" size=\"7\">TEXT TEXT TEXT</font>",
"timeDefined": "false"
}
]
}
]
}
}
我无法在 grails 中解析此 JSON:在以下位置出现异常:
"objectData": "<font face=\"Palatino Linotype, Book Antiqua, Palatino, serif\" size=\"7\">TEXT TEXT TEXT</font>",
由于值中有 \
个字符。
我尝试了以下代码:
JSONElement scriptJson=JSON.parse(resp)
甚至使用 JsonSlurper:
JsonSlurper slurper=new JsonSlurper()
def scriptJson=slurper.parseText(resp)
两者都以相同的值失败。
我试图在解析之前将 \
替换为 \
但无法使其工作:
resp=resp.replaceAll(/\+/,/\/)
出现编译错误,好像我尝试用任何其他字符替换,#
,除了 /
它被替换:
resp=resp.replaceAll(/\+/,/#/)
输出为:
<font face=#"Palatino Linotype, Book Antiqua, Palatino, serif#" size=#"7#">TEXT TEXT TEXT</font>
所以我需要解决方案:
正在解析此无效 JSON 或将 \
替换为 groovy 中的 \
。
这两天我一直在为此苦苦挣扎。请帮帮我。
好的。经过多次尝试和错误,终于成功了:
resp.replaceAll(/\+/,'\\')
输出为:
<font face=\"Palatino Linotype, Book Antiqua, Palatino, serif\" size=\"7\">TEXT TEXT TEXT</font>
现在 JSON.parse(resp)
和 slurper.parseText(resp)
都工作正常,没有任何错误。
我仍然认为可能有比这更好的解决方案。无论如何,我现在没有太多时间,所以我将采用此解决方案。
在我的 grails 应用程序中,我正在调用第三方 REST api,其中 returns JSON 我可能将 HTML 内容作为 属性价值。例如,像这样:
{
"presentationData": {
"id": "123-45",
"placeholders": [
{
"transition": "fade",
"items": [
{
"name": "Text Item",
"objectData": "<font face=\"Palatino Linotype, Book Antiqua, Palatino, serif\" size=\"7\">TEXT TEXT TEXT</font>",
"timeDefined": "false"
}
]
}
]
}
}
我无法在 grails 中解析此 JSON:在以下位置出现异常:
"objectData": "<font face=\"Palatino Linotype, Book Antiqua, Palatino, serif\" size=\"7\">TEXT TEXT TEXT</font>",
由于值中有 \
个字符。
我尝试了以下代码:
JSONElement scriptJson=JSON.parse(resp)
甚至使用 JsonSlurper:
JsonSlurper slurper=new JsonSlurper()
def scriptJson=slurper.parseText(resp)
两者都以相同的值失败。
我试图在解析之前将 \
替换为 \
但无法使其工作:
resp=resp.replaceAll(/\+/,/\/)
出现编译错误,好像我尝试用任何其他字符替换,#
,除了 /
它被替换:
resp=resp.replaceAll(/\+/,/#/)
输出为:
<font face=#"Palatino Linotype, Book Antiqua, Palatino, serif#" size=#"7#">TEXT TEXT TEXT</font>
所以我需要解决方案:
正在解析此无效 JSON 或将 \
替换为 groovy 中的 \
。
这两天我一直在为此苦苦挣扎。请帮帮我。
好的。经过多次尝试和错误,终于成功了:
resp.replaceAll(/\+/,'\\')
输出为:
<font face=\"Palatino Linotype, Book Antiqua, Palatino, serif\" size=\"7\">TEXT TEXT TEXT</font>
现在 JSON.parse(resp)
和 slurper.parseText(resp)
都工作正常,没有任何错误。
我仍然认为可能有比这更好的解决方案。无论如何,我现在没有太多时间,所以我将采用此解决方案。