使用自定义分隔符(Groovy)将映射转换为字符串

使用自定义分隔符(Groovy)将映射转换为字符串,groovy,Groovy,我有一个JSON: { "order_id" : 1, "order_item" : "PS5", "item_specs" : { "item_price" : "$499", "item_available" : false, "item_description" : "Console&q

我有一个JSON:

{
  "order_id" : 1,
  "order_item" : "PS5",
  "item_specs" : {
    "item_price" : "$499",
    "item_available" : false,
    "item_description" : "Console"
  },
  "sale_date" : "2020-10-20",
}
我想将json内部的映射转换为带分隔符
&
的字符串,并将其放回json,这是另一个参数:

item_specs" : {
    "item_price" : "$499",
    "item_available" : false,
    "item_description" : "Console"
  }
在此转换之后,我的JSON应该如下所示:

{
  "order_id" : 1,
  "order_item" : "PS5",
  "item_specs" : {
    "item_price" : "$499",
    "item_available" : false,
    "item_description" : "Console"
  },
  "items_as_string": "item_price=$499&item_available=false&item_description=Console"
  "sale_date" : "2020-10-20",
}

如何使用Groovy?

有什么问题?以防万一,您正在了解如何在groovy中使用json:请添加您尝试过的代码以及它是如何失败的(例如错误、堆栈跟踪、日志等),以便我们可以改进它。此外,这看起来更像是查询参数的url编码,这通常意味着不仅仅是连接字符串。我使用
JsonSlurper
解析JSON,然后在其上使用
JsonBuilder
,并使用
builder.content.item\u as\u string=builder.content.item\u spec.toMapString()
。我一点也不懂groovy。另外,这不是查询参数的url编码。@hsadik可能仍然需要引用。如果键/值包含
=
&
,会发生什么情况?如果键/值包含=或-,则应为无效键或值并应跳过。问题是什么?以防万一,您正在了解如何在groovy中使用json:请添加您尝试过的代码以及它是如何失败的(例如错误、堆栈跟踪、日志等),以便我们可以改进它。此外,这看起来更像是查询参数的url编码,这通常意味着不仅仅是连接字符串。我使用
JsonSlurper
解析JSON,然后在其上使用
JsonBuilder
,并使用
builder.content.item\u as\u string=builder.content.item\u spec.toMapString()
。我一点也不懂groovy。另外,这不是查询参数的url编码。@hsadik可能仍然需要引用。如果键/值包含
=
&
,会发生什么情况?如果键/值包含=或-,则应为无效键或值,并应跳过。
map.collect{ k,v -> k+'='+v }.join('&')