首页 > 解决方案 > 在 JavaScript 中解析特定的 Json

问题描述

我正在努力解析 Json 以满足所需的需求。

我正在从 GraphQL 调用中提取数据,需要解析响应然后生成 XML 文件。

示例 JSON 响应:

{
  "data": {
    "products": {
      "results": [{
        "masterData": {
          "current": {
            "name": "Paragon Pen",
            "description": "TEST",
            "categories": [{
              "name": "Writing Instrument"
            }]
          }
        }
      }]
    }
  }
}

我需要解析它并制作一个像这样的xml文件:

<?xml version="1.0"?><product><name>Paragon Pen</name><description>TEST</description><category>Writing Instrument</category></product>

我无法获得解析然后保留父元素的方法。例如,我想制作 xml 标记,然后在此标记内添加“名称”元素(写作工具)。任何帮助表示赞赏。

到目前为止我的 Parse 方法。:

    //extractJSON function. Get the information and write it to the file.
function extractJSON(obj) {
    for (const i in obj) {
        if (Array.isArray(obj[i]) || typeof obj[i] === 'object') {
            extractJSON(obj[i]);
        } else {
            if(VERBOSE){console.log(i + ': ' + obj[i]);}

            //Call next step. Write to file.
            eventEmitter.emit('writeToXML',i,obj[i]);
        }
    }
}

标签: javascriptjsonxml

解决方案


为什么要解析整个对象?

您应该能够遍历数组并发出事件

data.products.results.forEach(result, index => eventEmitter.emit('writeToXML',index,result))

然而,示例 xml 只支持一种产品,对吗?所以每个发射都会创建自己的xml文件?


推荐阅读