首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带转义引号的Groovy JsonSlurper JSON值

带转义引号的Groovy JsonSlurper JSON值
EN

Stack Overflow用户
提问于 2016-01-15 09:50:33
回答 1查看 6.3K关注 0票数 4

我正在开发一个用Groovy编写的小型工具,它在电子邮件中解析JSON字符串。其中一些JSON字符串具有包含转义引号的JSON值。

例如:

代码语言:javascript
复制
{
   "hello": "world with \"quotation marks\""
}

为了解析这些字符串,我使用Groovy的JsonSlurper。下面的代码演示了我的问题:

代码语言:javascript
复制
import groovy.json.JsonException
import groovy.json.JsonSlurper

try {     
  print new JsonSlurper().parseText('''
    {
      "hello": "world with \"quotation marks\""
    }
  ''')
} catch (JsonException | IllegalArgumentException e) {
  print e
}

有关现场演示,请参见https://groovyconsole.appspot.com/script/6193189027315712

在执行此代码时,将引发以下异常:

groovy.json.JsonException:期望'}‘或’',但得到当前字符'q‘,其int值为113个,当前字符读为'q’,其int值为'}‘或’‘,但得到了当前字符'q’,其int值为113号,第3号索引号为"hello":“具有”引号“的世界”............................^

因此,JsonSlurper忽略了引号的转义。不幸的是,我无法控制输入,即JSON字符串。因此,我必须找到一种方法将这样的JSON字符串解析为映射或任何其他适当的数据结构。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-15 10:11:45

字符串在json中没有正确转义。文本数据应类似于:

代码语言:javascript
复制
'''
{
"hello": "world with \\\"quotation marks\\\""
}
'''

您所得到的字符串指示邮件主体以格式包含json:{ "hello": "world with "quotation marks"" },虽然它应该类似于{ "hello": "world with \"quotation marks\"" } (如果前面是这样的话),那么您就无法解析无效的json,因为代码无法识别转义数据。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34808352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档