当前位置: 首页 > 知识库问答 >
问题:

使用mule dataweave将JSON数组转换成行

齐昊
2023-03-14

我有以下要求。

输入为

{ "packageConfiguration": [
      {
        "packageId": [
          "AIM_PACKAGE"
        ],
        "component": [
          "Handbook"
        ],
        "fieldName": [
          "Upload Handbook Document"
        ],
        "assetUrl": [
          "sflydamlocation.handbookfilename.pdf"
        ]
      }
    ]}

我需要将上面的json数组转换为以下输出格式:

 {
        "pakage": ""packageId":"AIM_PACKAGE", "component":"Handbook",  "fieldName":"Upload Handbook Document","assetUrl":"sflydamlocation.handbookfilename.pdf""
}

共有2个答案

卫浩瀚
2023-03-14

这样的方法应该有效,除非你需要更灵活的方法。我假设您正在使用Mule3/DW1:

%dw 1.0
%output application/json

%var packageConfig = payload.packageConfiguration[0]
---
{
  package: packageConfig mapObject ((value, key) -> {
    (key): value[0]
  })
}
蒲德曜
2023-03-14

您可以将所有字段视为字符串,但请注意:

  1. 内部引号必须转义。否则,输出不是有效的JSON
  2. 考虑到“package”的值也不是真正有效的JSON,以防您想要解析它。它应该是一个对象(例如“{\”package\“:…}”)
  3. 此脚本要求所有数组都只有一个元素。忽略的元素越多,忽略的元素越少,可能会出现错误。这不是一个非常坚固的设计

脚本(不推荐):

%dw 2.0
output application/json

---
package: using (pc = payload.packageConfiguration[0]) (

        " \"packageId\": \"$(pc.packageId[0])\", " ++  
        " \"component\": \"$(pc.component[0])\" "  ++
        " \"fieldName\": \"$(pc.fieldName[0])\" "  ++
        " \"assetUrl\": \"$(pc.assetUrl[0])\" "
 )

输出:

{
  "package": " \"packageId\": \"AIM_PACKAGE\",  \"component\": \"Handbook\"  \"fieldName\": \"Upload Handbook Document\"  \"assetUrl\": \"sflydamlocation.handbookfilename.pdf\" "
}

这是一个丑陋的字符串连接。相反,我建议只将所需的输出编写为JSON对象。

脚本(推荐):

%dw 2.0
output application/dw
var pc = payload.packageConfiguration[0]
---
package: 
    write({
        packageId: pc.packageId[0],  
        component: pc.component[0],  
        fieldName: pc.fieldName[0],  
        assetUrl: pc.assetUrl[0]
        }, "application/json") replace /\n/ with ""

输出

{
  "package": "{  \"packageId\": \"AIM_PACKAGE\",  \"component\": \"Handbook\",  \"fieldName\": \"Upload Handbook Document\",  \"assetUrl\": \"sflydamlocation.handbookfilename.pdf\"}"
}

第二个脚本要干净得多,不易出错,并返回一个转义的JSON对象,您可以将其作为JSON使用。

 类似资料:
  • 我遇到了一个问题,使用颠簸转换将平面 JSON 转换为嵌套 JSON。而且我对颠簸转型很陌生。输入和输出详细信息如下。 我的输入: 预期产量

  • 问题内容: 我有一个包含几个整数的数组。我已经向数组添加了一些值,但是现在我需要通过jQuery的方法将此数组发送到页面。如何将其转换为JSON对象进行发送? 问题答案: 向后兼容的脚本:https : //github.com/douglascrockford/JSON- js/blob/master/json2.js 并致电: 注意: JSON对象现在是大多数现代Web浏览器(IE 8及更高版

  • 问题内容: 我有一个想要转换为纯JavaScript数组的json数组: 这是我的json数组: 如何将其转换为普通的javascript数组,如下所示: 问题答案: 已经是JS对象(不是JSON)。但是,您可以在这里: 编辑:将 元素插入数组中的正确位置。谢谢@RoToRa 也许一开始不创建此类对象会更容易。它是如何创建的?

  • 问题内容: myArray是: 我想将其转换为JSON,例如: 我试过了: 但这正在返回: 问题答案: 您的问题是非顺序索引。 Php数组必须具有要编码为JSON数组的索引。 您可以使用array_values重置数组键:

  • 问题内容: 我有一个包含几个整数的数组。我已经向数组添加了一些值,但是现在我需要通过jQuery的方法将此数组发送到页面。如何将其转换为JSON对象进行发送? 问题答案: 并致电: 注意: _JSON对象现在是大多数现代Web浏览器(IE 8及更高版本)的一部分。

  • 问题内容: 有谁知道如何将包含json的字符串转换为C#数组。我有这个从webBrowser读取text / json并将其存储到字符串中。 只需要以某种方式将json字符串更改为数组即可。一直在查看Json.NET,但是我不确定那是否是我所需要的,因为我不想将数组更改为json。但是反过来。谢谢您的帮助! 问题答案: 只需使用字符串并使用JavaScriptSerializer将其反序列化为本地