我正在开发一个管道,以动态地将salesforce对象中的所有列转储到S3存储桶中。我使用描述对象API获取salesforce对象的所有列。我将所有列存储到一个变量中,然后从中创建一个大的SOQL查询,并提交一个批量查询作业v2。
现在,这是主要问题。我从salesforce连接器获取的列名是camelCase
[{
"Id": 123,
"FirstName": "Manual",
"MasterRecordId__c" :"abc"
},
{
"Id": 456,
"FirstName": "John",
"MasterRecordId__c" :"def"
}]
但是我希望列名是蛇形的
[{
"Id": 123,
"first_name": "Manual",
"master_record_id__c":"abc"
},
{
"Id": 456,
"first_name": "john",
"master_record_id__c":"def"
}]
我知道mulesoft有一个下划线函数做同样的事情,但我不能应用任何函数在"键"水平。
任何线索都会很有帮助。如果有任何问题,请告诉我。
您只需要使用mapObject
和underscore
函数
%dw 2.0
import underscore from dw::core::Strings
output application/json
---
payload map ((item) ->
item mapObject ((value, key) -> {
(underscore(key)): value
})
)
如果您希望Id字段保持原样,请尝试如下:
%dw 2.0
import * from dw::core::Strings
output application/json
---
payload map ($ mapObject ((value, key, index) -> if (capitalize(key as String) == key as String)
{
(key): value
}
else
{
(underscore(key)): value
}))