如何在DataWeave中将Salesforce字段名从驼峰式转为蛇形命名?
解决MuleSoft中Salesforce字段名驼峰转蛇形的问题
直接用DataWeave编写转换逻辑,结合MuleSoft自带的underscore函数处理字段名(key),同时保留Id字段不变,具体实现如下:
核心DataWeave脚本
%dw 2.0 output application/json // 定义字段名转换函数:保留Id,其余驼峰转蛇形 fun transformFieldName(key: String): String = if (key == "Id") key else underscore(key) --- // 遍历数组中每个对象,转换所有字段名 payload map ((record) -> record mapObject ((value, fieldKey) -> (transformFieldName(fieldKey)): value ) )
脚本说明
transformFieldName函数:专门处理单个字段名的转换逻辑,判断字段是Id时直接保留,其他字段调用underscore函数把驼峰格式转成蛇形(比如FirstName→first_name,MasterRecordId__c→master_record_id__c)payload map:遍历Salesforce返回的JSON数组,逐个处理每条记录record mapObject:遍历单条记录的所有键值对,替换原字段名为转换后的蛇形名称,值保持原样
扩展:处理嵌套对象(如果有)
如果Salesforce返回的结果包含嵌套对象,把脚本改成递归处理即可:
%dw 2.0 output application/json fun transformFieldName(key: String): String = if (key == "Id") key else underscore(key) fun transformObject(obj: Any): Any = obj match { case is Object -> obj mapObject ((value, key) -> (transformFieldName(key)): transformObject(value)) case is Array -> obj map ((item) -> transformObject(item)) else -> obj } --- transformObject(payload)
直接把这段DataWeave放到流水线的Transform组件里,接在Salesforce Bulk Query的输出之后,就能得到符合要求的蛇形命名格式数据。
内容的提问来源于stack exchange,提问作者joono
相关产品推荐
相关产品推荐

