我尝试将数据推送到第 3 方 Web 服务,特别是将 xml 请求转换为 json 请求(与 Node Soap 一起使用)。
下面是一个可以正常工作的原始 xml 请求的示例:
<EformData>
<EformFields>
<FieldName>txt_customername</FieldName>
<FieldValue>Scott</FieldValue>
</EformFields>
<EformFields>
<FieldName>txt_organisation</FieldName>
<FieldValue>My Orginisation</FieldValue>
</EformFields>
<EformFields>
<FieldName>txt_address</FieldName>
<FieldValue>My Address</FieldValue>
</EformFields>
<EformFields>
<FieldName>txt_telnumber</FieldName>
<FieldValue>123456</FieldValue>
</EformFields>
</EformData>
我遇到的问题是尝试将这些重复节点转换为一个对象,新的对象数据将被最后一个请求覆盖。
这是我到目前为止所拥有的:
var formValues = {
"txt_customername": "Scott",
"txt_organisation": "My Orginisation",
"txt_address": "My Address",
"txt_telnumber": "123456"
}
// Container
var EformData = {
"EformFields": {
}
};
// populate the object
for (var key in formValues) {
EformData.EformFields.FieldName = [key];
EformData.EformFields.FieldValue = formValues[key];
}
如下所示,只有最后一个请求存储在对象中,其他请求都被覆盖:
<EformData>
<EformFields>
<FieldName>txt_telnumber</FieldName>
<FieldValue>123456</FieldValue>
</EformFields>
</EformData>
是否可以通过这种方式构建一个对象来匹配原始重复的 xml 节点数据?
最佳答案
你的json的数据结构应该是EformData
有一个EformFields
对象数组,它有FieldName
和属性>FieldValue
。
var formValues = {
"txt_customername": "Scott",
"txt_organisation": "My Orginisation",
"txt_address": "My Address",
"txt_telnumber": "123456"
}
// Container
var EformData = {
"EformFields": []
};
// populate the object
for (var key in formValues) {
EformData.EformFields.push({
"FieldName": key,
"FieldValue": formValues[key]
});
}
关于javascript - 将 xml 请求转换为具有重复节点名称的 json 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49730790/