javascript - 如何将 JSON 数据转换为 XML?

标签 javascript json xml

我目前正在将从外部 API 接收的 json 转换为 XML,并且 XML 由我的 API 返回:

     var result = util.getAdis(firstName, lastName, dob, function(err,response,data){
        if(!err) {
            var data = JSON.parse(data);
            var root = builder.create('ADIS')
            data.forEach(person => {
                var item = root.ele('person');
                item.att('GivenName', person.GivenName);
                item.att('MiddleInitial', person.MiddleInitial);
                item.att('Surname', person.Surname);
                item.att('Event', person.Event);
                item.att('EventDate', person.EventDate);
            })
            var xml = root.end({ pretty: true });
            res.type('application/xml');
            res.send(xml);   
        } else {
            console.log(err)
            res.send(500)
        }
    });

我正在使用an XML builder这很好用。但是有没有更好的方法来编写这段代码呢?所以它是动态的,我不想手动分配每个元素。

JSON 如下所示:

[{
    GivenName: 'Mable',
    MiddleInitial: 'G',
    Surname: 'Stewart',
    Event: 'A',
    EventDate: '2014-07-16',
}]

最佳答案

遵循package的用法第一个例子,他们向我们展示了.ele函数的使用方法。

.ele('node_name', {node_attr_object: attr_value} , 'node_value')

在您的情况下,您需要创建一个名为 person 的节点,其所有属性都是 data 项的属性,然后在循环中,您只放置对象作为ele函数的第二个参数,而不是手动设置每个属性。

var result = util.getAdis(firstName, lastName, dob, function (err, response, data) {
  if (!err) {
    var data = JSON.parse(data);
    var root = builder.create('ADIS')
    data.forEach(person => {
      root.ele('person', person);
    })
    var xml = root.end({ pretty: true });
    res.type('application/xml');
    res.send(xml);
  } else {
    console.log(err)
    res.send(500)
  }
});

数据是

[{
    GivenName: 'Mable',
    MiddleInitial: 'G',
    Surname: 'Stewart',
    Event: 'A',
    EventDate: '2014-07-16',
}]

您将得到一个 xml 字符串,例如:

<?xml version="1.0"?>
<ADIS>
  <person GivenName="Mable" MiddleInitial="G" Surname="Stewart" Event="A" EventDate="2014-07-16"/>
</ADIS>

关于javascript - 如何将 JSON 数据转换为 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59347935/

相关文章:

c++ - 如何使用 boost::json::value 调用无参数函数

javascript - Bootstrap 中的选项卡中的选项卡中的嵌套选项卡

json - 将 XSD 导入 OpenAPI

angularjs - 将 Json 数据从 Angular JS 传递到 Spring REST API 并处理它

android - 如何使用kotlin在recyclerview中附加xml文件?

java - com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException : Invalid byte 2 of 4-byte UTF-8 sequence (XML)

xml - MSXML : Invalid Class String

javascript - 处理溢出的 Reveal JS 幻灯片的最佳方法

javascript - 无法读取未定义的属性 'info'

javascript - 我可以在 Drupal 7 的 jquery 脚本中添加 php if 语句吗?