我有一个如下的JSON:
[{
"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中应该只有基于“标题”字段(此处为ABC和DEF )中的不同标题创建的记录。
同一标题的每个条目都应该不断更新记录,例如,对于标题ABC的每个条目,netsuite中应该只有一条记录,所有值都更新了。
我尝试过使用groupby,但是,动态插入groupby对象给我带来了问题。下面是groupby之后的输出。
{
"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
}
]
}我不知道如何进一步处理这件事。
发布于 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增量地更新对象,从而给出更新的结果。
请尝试以下代码:
%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 $https://stackoverflow.com/questions/60033624
复制相似问题