WSO2 ESB中XML转JSON以适配Salesforce Rest API更新SObject
实现XML到指定JSON格式的转换方法
我来分享几个实用的实现方案,帮你把给定的XML转换成Salesforce更新API所需的JSON格式:
方法1:Python + xmltodict库(通用脚本场景)
这是最省心的方式,适合用Python做集成脚本的场景:
- 先安装依赖库:
pip install xmltodict
- 编写转换代码:
import xmltodict import json # 你的原始XML内容 xml_input = """<body><fandV><name>Acount Name</name><description>Account Description</description></fandV></body>""" # 解析XML为字典 parsed_data = xmltodict.parse(xml_input) # 提取fandV节点下的键值对 fandv_dict = parsed_data['body']['fandV'] # 转换为JSON字符串 target_json = json.dumps(fandv_dict) print(target_json) # 输出结果:{"name":"Acount Name","description":"Account Description"}
方法2:集成工具内置转换(比如Postman/MuleSoft)
如果是在API集成工具里操作,直接用工具自带的XML转JSON功能即可:
Postman示例(Pre-request Script)
// 获取请求里的XML原始内容 const xmlBody = pm.request.body.raw; // 转换XML为JSON对象 const xmlJson = xml2Json(xmlBody); // 提取fandV节点的数据 const fieldAndValue = xmlJson.body.fandV; // 将结果存入环境变量,后续更新请求直接引用 pm.environment.set("fieldandvalue", JSON.stringify(fieldAndValue));
方法3:Apex代码(Salesforce内部处理)
如果是在Salesforce Apex中接收XML并转换,用DOM解析实现:
public class XmlToSalesforceJson { public static String convertToFieldValueJson(String xmlContent) { Dom.Document xmlDoc = new Dom.Document(); xmlDoc.load(xmlContent); Dom.XmlNode rootNode = xmlDoc.getRootElement(); Dom.XmlNode fandvNode = rootNode.getChildElement('fandV', null); Map<String, String> fieldMap = new Map<String, String>(); for (Dom.XmlNode childNode : fandvNode.getChildElements()) { fieldMap.put(childNode.getName(), childNode.getText().trim()); } return JSON.serialize(fieldMap); } // 测试用例 public static void testConversion() { String testXml = '<body><fandV><name>Acount Name</name><description>Account Description</description></fandV></body>'; String resultJson = convertToFieldValueJson(testXml); System.debug('转换结果:' + resultJson); } }
方法4:简单正则匹配(仅适用于结构固定的简单XML)
如果XML结构永远像示例这么简单,也可以用正则快速提取:
import re import json xml_input = """<body><fandV><name>Acount Name</name><description>Account Description</description></fandV></body>""" # 匹配所有标签和对应内容 tag_matches = re.findall(r'<(\w+)>(.*?)</\1>', xml_input) # 过滤掉body和fandV标签,生成目标字典 result_dict = {key: value for key, value in tag_matches if key not in ['body', 'fandV']} target_json = json.dumps(result_dict) print(target_json)
这些方案都能精准输出你需要的JSON格式,直接传入Salesforce更新函数的fieldandvalue参数即可,根据你的实际使用场景选择最合适的就行~
内容的提问来源于stack exchange,提问作者nad.SN
相关产品推荐
相关产品推荐

