找回密码
 立即注册
XMLobjOBJtoXMLvar | 软件设计/软件工程 2022-05-04 222 0star收藏 版权: . 保留作者信息 . 禁止商业使用 . 禁止修改作品
问题
我正在尝试将 JSON 转换为 XML,但我没有得到确切的输出。在我的 JSON 中,它没有将其转换为 XML 数组
  1. var InputJSON = "{"body":{"entry": [{ "fullURL" : "abcd","Resource": "1234"},{ "fullURL" : "efgh","Resource": "5678"}]}}";
  2. var output = eval("OBJtoXML("+InputJSON+");")

  3. function OBJtoXML(obj) {
  4.     var xml = '';
  5.     for (var prop in obj) {
  6.         xml += "<" + prop + ">";
  7.         if(obj[prop] instanceof Array) {
  8.             for (var array in obj[prop]) {
  9.                 xml += OBJtoXML(new Object(obj[prop][array]));
  10.             }
  11.         } else if (typeof obj[prop] == "object") {
  12.             xml += OBJtoXML(new Object(obj[prop]));
  13.         } else {
  14.             xml += obj[prop];
  15.         }
  16.         xml += "</" + prop + ">";
  17.     }
  18.     var xml = xml.replace(/<\/?[0-9]{1,}>/g,'');
  19.     return xml
  20. }
复制代码

实际生产:
  1. <body>
  2.   <entry>
  3.     <fullURL>abcd</fullURL>
  4.     <Resource>1234</Resource>
  5.     <fullURL>efgh</fullURL>
  6.     <Resource>5678</Resource>
  7.   </entry>
  8. </body>
复制代码

预期输出:
  1. <body>
  2.   <entry>
  3.     <fullURL>abcd</fullURL>
  4.     <Resource>1234</Resource>
  5.   </entry>
  6. <entry>
  7.     <fullURL>efgh</fullURL>
  8.     <Resource>5678</Resource>
  9.   </entry>
  10. </body>
复制代码

如果我在代码中遗漏了任何内容,请指导我达到预期的结果

回答
将 OBJtoXML 函数替换为
  1. function OBJtoXML(obj) {
  2.   var xml = '';
  3.   for (var prop in obj) {
  4.     xml += obj[prop] instanceof Array ? '' : "<" + prop + ">";
  5.     if (obj[prop] instanceof Array) {
  6.       for (var array in obj[prop]) {
  7.         xml += "<" + prop + ">";
  8.         xml += OBJtoXML(new Object(obj[prop][array]));
  9.         xml += "</" + prop + ">";
  10.       }
  11.     } else if (typeof obj[prop] == "object") {
  12.       xml += OBJtoXML(new Object(obj[prop]));
  13.     } else {
  14.       xml += obj[prop];
  15.     }
  16.     xml += obj[prop] instanceof Array ? '' : "</" + prop + ">";
  17.   }
  18.   var xml = xml.replace(/<\/?[0-9]{1,}>/g, '');
  19.   return xml
  20. }
复制代码






上一篇:在 Swift 中获取 double 的小数部分
下一篇:“拒绝访问” Excel 2019 桌面上的 Worksheet