JSON是一种用于数据交互的轻量级格式。通过使用JSON,我们可以轻松地将数据从一台计算机传输到另一台计算机。在开发中,我们经常需要将JSON数据转换为其他格式,或者将其他格式转换为JSON数据。本文将介绍如何在JavaScript中进行这些转换。
JSON转换为JavaScript对象
var jsonStr = '{"name": "张三", "age": 20}'; var jsonObj = JSON.parse(jsonStr);
上述代码将JSON字符串转换为JavaScript对象。JSON.parse()方法可以将JSON字符串解析为对应的JavaScript对象。
JavaScript对象转换为JSON
var jsonObj = {name: "张三", age: 20}; var jsonStr = JSON.stringify(jsonObj);
上述代码将JavaScript对象转换为JSON字符串。JSON.stringify()方法可以将JavaScript对象转换为对应的JSON字符串。
XML转换为JSON
var xmlStr = '<userInfo><name>张三</name><age>20</age></userInfo>'; var xmlDoc = new DOMParser().parseFromString(xmlStr, "text/xml"); var jsonStr = JSON.stringify(xmlToJson(xmlDoc)); function xmlToJson(xml) { var obj = {}; if (xml.nodeType == 1) { if (xml.attributes.length > 0) { obj["@attributes"] = {}; for (var j = 0; j < xml.attributes.length; j++) { var attribute = xml.attributes.item(j); obj["@attributes"][attribute.nodeName] = attribute.nodeValue; } } } else if (xml.nodeType == 3) { obj = xml.nodeValue; } if (xml.hasChildNodes()) { for(var i = 0; i < xml.childNodes.length; i++) { var item = xml.childNodes.item(i); var nodeName = item.nodeName; if (typeof(obj[nodeName]) == "undefined") { obj[nodeName] = xmlToJson(item); } else { if (typeof(obj[nodeName].push) == "undefined") { var old = obj[nodeName]; obj[nodeName] = []; obj[nodeName].push(old); } obj[nodeName].push(xmlToJson(item)); } } } return obj; }
上述代码将XML字符串转换为JSON字符串。该代码使用了DOMParser()方法将XML字符串解析成XML文档,然后将XML文档转换为JavaScript对象,最后使用JSON.stringify()方法将JavaScript对象转换为JSON字符串。
JSON转换为XML
var jsonStr = '{"name": "张三", "age": 20}'; var jsonObj = JSON.parse(jsonStr); var xmlStr = jsonToXml(jsonObj); function jsonToXml(jsonObj) { var xml = '<userInfo> '; for (var key in jsonObj) { if (jsonObj.hasOwnProperty(key)) { var val = jsonObj[key]; if (typeof(val) == "object") { xml += "<" + key + ">" + jsonToXml(val) + "</" + key + ">"; } else { xml += "<" + key + ">" + val + "</" + key + ">"; } } } xml += '</userInfo>'; return xml; }
上述代码将JSON字符串转换为XML字符串。该代码将JSON对象递归转换为XML节点,并拼接成XML字符串。