首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mule4JSON2.0如何在“/DW”的基础上插入这个JSON?

Mule4JSON2.0如何在“/DW”的基础上插入这个JSON?
EN

Stack Overflow用户
提问于 2020-02-03 13:37:02
回答 1查看 162关注 0票数 0

我有一个如下的JSON:

代码语言:javascript
复制
[{
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 122},
        "Title": "ABC",
        "Auto Reversing": "",
        "Debit": 20,
        "Credit": 0
    },
    {
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 122},
        "Title": "ABC",
        "Auto Reversing": "",
        "Debit": 10,
        "Credit": 0
    },
    {
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 122},
        "Title": "ABC",
        "Auto Reversing": "",
        "Debit": 0,
        "Credit": 30
    },
    {
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 3144},
        "Title": "DEF",
        "Auto Reversing": "",
        "Debit": 10,
        "Credit": 0
    },
    {
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 3144},
        "Title": "DEF",
        "Auto Reversing": "",
        "Debit": 0,
        "Credit": 10
    }
]

我必须将这些数据上传到netsuite上,因此,在netsuite中应该只有基于“标题”字段(此处为ABCDEF )中的不同标题创建的记录。

同一标题的每个条目都应该不断更新记录,例如,对于标题ABC的每个条目,netsuite中应该只有一条记录,所有值都更新了。

我尝试过使用groupby,但是,动态插入groupby对象给我带来了问题。下面是groupby之后的输出。

代码语言:javascript
复制
{
  "DEF": [
    {
      "Number": "66667",
      "Date": "2020-08-29 16:40:32.0",
      "Account Number": {
        "externalId": 1,
        "account": 3144
      },
      "Title": "DEF",
      "Auto Reversing": "",
      "Debit": 0,
      "Credit": 10
    },
    {
      "Number": "66667",
      "Date": "2020-08-29 16:40:32.0",
      "Account Number": {
        "externalId": 1,
        "account": 3144
      },
      "Title": "DEF",
      "Debit": 0,
      "Credit": 10
    }
  ],
  "ABC": [
    {
      "Number": "66667",
      "Date": "2020-08-29 16:40:32.0",
      "Account Number": {
        "externalId": 1,
        "account": 3144
      },
      "Title": "ABC",
      "Debit": 20,
      "Credit": 0
    },
    {
      "JE Number": "66667",
      "JE Date": "2020-08-29 16:40:32.0",
      "Account Number": {
        "externalId": 1,
        "account": 3144
      },
      "Journal Entry Title": "ABC",
      "Debit": 10,
      "Credit": 0
    },
    {
      "JE Number": "66667",
      "JE Date": "2020-08-29 16:40:32.0",
      "Account Number": {
        "externalId": 1,
        "account": 3144
      },
      "Journal Entry Title": "ABC",
      "Debit": 0,
      "Credit": 30
    }
  ]
}

我不知道如何进一步处理这件事。

EN

回答 1

Stack Overflow用户

发布于 2020-02-03 21:17:46

让我先说你的问题不清楚。我将抓住这一点来回答下面的问题:“总共应该只生成2条记录,一条标题是ABC,另一条是DEF。”

我确实使用了dw::core::Objects::mergeWith函数,你可以在这里找到文档:https://docs.mulesoft.com/mule-runtime/4.2/dw-objects-functions-mergewith

试试这个:payload distinctBy $.Title

编辑:既然你进一步澄清了这个问题,我可以告诉你,我不知道如何使用netsuite连接器,但我知道DW,我可以用相同的Title增量地更新对象,从而给出更新的结果。

请尝试以下代码:

代码语言:javascript
复制
%dw 2.0
output application/dw
var data = [{
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 122},
        "Title": "ABC",
        "Auto Reversing": "",
        "Debit": 20,
        "Credit": 0
    },
    {
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 122},
        "Title": "ABC",
        "Auto Reversing": "",
        "Debit": 10,
        "Credit": 0
    },
    {
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 122},
        "Title": "ABC",
        "Auto Reversing": "",
        "Debit": 0,
        "Credit": 30
    },
    {
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 3144},
        "Title": "DEF",
        "Auto Reversing": "",
        "Debit": 10,
        "Credit": 0
    },
    {
        "Number": "66667",
        "Date": "2020-08-29 16:40:32.0",
        "Account Number":  {"externalId":1,"account": 3144},
        "Title": "DEF",
        "Auto Reversing": "",
        "Debit": 0,
        "Credit": 10
    }
]
---
// Group the data by Title
data groupBy $.Title
// Iterate over the object
mapObject {
    ($$): (
        // Iterate over the array in the values and mergeWith the sequence 
        // of objects with the same title
        // NOTE: the values to the right take precedence when using mergeWith.
        $ reduce (e, acc={}) -> acc dw::core::Objects::mergeWith e
    )
}
// Restore the array with the updated objects
pluck $
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60033624

复制
相关文章

相似问题

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