【问题标题】:How to get rid of slashes in JSON using Groovy如何使用 Groovy 去除 JSON 中的斜线
【发布时间】:2020-12-04 03:54:44
【问题描述】:

我需要查询一个表,然后以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"
   }
]

【问题讨论】:

  • 当你在谈论output - 你是什么意思?请分享您用于输出returnMap 的代码

标签: json groovy


【解决方案1】:

如果您使用 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))

【讨论】:

    【解决方案2】:

    感谢 Szymon Stepniak。

    我添加了这个并且它有效。 def jsonIn = new JsonSlurper().parseText(input); (输入是上面的返回映射)

    def WhosWhoList = [:]; WhosWhoList = new JsonSlurper().parseText(jsonIn."WhosWho");

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多