需要在dataweave中将csv头从驼峰大小写更改为蛇形大小写



我正在开发一个管道,以动态地将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有一个下划线函数做同样的事情,但我不能应用任何函数在"键"水平。

任何线索都会很有帮助。如果有任何问题,请告诉我。

您只需要使用mapObjectunderscore函数

%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
    }))

最新更新