json - 如何使用 Groovy 去除 JSON 中的斜线
问题描述
我需要查询一个表,然后以 JSON 格式返回 SQL 返回的所有行——
这是代码 -
HashMap < String,Object > returnMap = new HashMap < String,Object > ();
Execute SQL....
def ArraySize = SQL.size();
def WhosWhoFinal = [];
for (int a = 0; a <= ArraySize - 1; a++) {
def WhosWho = [:];
WhosWho.put("Line ID", SQL[a]."LineID".toString().trim());
WhosWho.put("Alpha Name", SQL[a]."AlphaName".toString().trim());
WhosWho.put("Mailing Name", SQL[a]."MailingName".toString().trim());
WhosWho.put("Type Code", SQL[a]."TypeCode".toString().trim());
WhosWhoFinal << WhosWho;}
returnMap.put("WhosWho", JsonOutput.toJson(WhosWhoFinal));
return returnMap;
我得到的输出有斜线并且没有缩进 -
"WhosWho" : "[{\"Line ID\":\"0\",\"Alpha Name\":\"Alpha Name 1\",\"Mailing Name\":\"Mailing Name1\",\ "Type Code\":\"\"},{\"Line ID\":\"1\",\"Alpha Name\":\"Alpha Name 2\",\"Mailing Name\":\" Mailing Name2\",\"Type Code\":\"E\"},{\"Line ID\":\"2\",\"Alpha Name\":\"Alpha Name 3\",\"邮寄姓名\":\"邮寄姓名3\",\"类型代码\":\"O\"}]"
这是我想要得到的——
"WhosWho":[
{
"Line ID":0,
"Alpha Name":"Alpha Name1",
"Mailing Name":"Mailing Name1",
"Type Code":""
},
{
"Line ID":1,
"Alpha Name":"Alpha Name2",
"Mailing Name":"Mailing Name2",
"Type Code":"E"
},
{
"Line ID":2,
"Alpha Name":"Alpha Name3",
"Mailing Name":"Mailing Name3",
"Type Code":"O"
}
]
解决方案
JsonOutput.toJson(m)
如果您使用方法两次将映射对象序列化为 JSON,您会得到用斜杠转义的双引号。在以下行中:
returnMap.put("WhosWho", JsonOutput.toJson(WhosWhoFinal));
您将序列化的 JSON 字符串放在WhosWho
键下。您(很可能)接下来要做的(在您的代码示例中缺少)是您调用如下内容:
JsonOutput.toJson(returnMap)
它获取存储在WhosWho
键中的字符串并将其序列化为 JSON 字符串,因此所有双引号都被转义了。
您可以通过WhosWhoFinal
首先不序列化到 JSON 字符串来避免这种情况:
returnMap.put("WhosWho", WhosWhoFinal);
其次,如果你想漂亮地打印你的 JSON 输出,你可以调用JsonOutput.prettyPrint(s)
带有s
序列化 JSON 字符串的方法。
JsonOutput.prettyPrint(JsonOutput.toJson(returnMap))
推荐阅读
- ubuntu - 如何在 ubuntu 18.04 上安装 sasm
- android - 如何仅在jetpack compose中在底部添加边框
- elasticsearch - 从带有logstash的嵌套JSON中提取选定的属性?
- xml - 如何使用 order by 编写 Spark XML 写作?
- iframe - SSO 与 JWT 使用 PHP - 在 iframe 中显示仪表板
- android - 从 Play 市场下载时通知不起作用
- scikit-learn - 在 pyenv 中找到正确版本的 python/sklearn 以使用机器学习模型
- liquibase - 当没有任何更改时,Liquibase 会生成 dropdefault 更改集
- django - 即使在进行迁移之后,/admin/login/ 处的 OperationalError
- iframe - Blogger 模板无法全屏播放视频