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) 都工作正常,没有任何错误。

我仍然认为可能有比这更好的解决方案。无论如何,我现在没有太多时间,所以我将采用此解决方案。