【问题标题】:get ajax xml url contain json content , how to read it by javascript获取 ajax xml url 包含 json 内容,如何通过 javascript 读取它
【发布时间】:2017-03-11 19:42:38
【问题描述】:
<string xmlns="http://tempuri.org/">
"Result": "Sucess",
"MotorList": [
{
"id": "1",
"titleen": "Camry",
"titlear": "Multi_service"}]
</string>
这个 XML 包含 json ,所以如何使用 javascript 从 xml 中解析 json 数据
【问题讨论】:
标签:
javascript
json
ajax
xml
html-framework-7
【解决方案1】:
据我了解,您从 ajax 得到的结果不是一个完整的 JSON 对象。
JSON 对象以
开头
{
并以
结尾
}
例如:
{
"Result": "Sucess",
"MotorList": [
{
"id": "1",
"titleen": "Camry",
"titlear": "Multi_service"
}
]
}
所以您需要将响应包装在 {} 中并使用 JSON.parse() 解析为对象
例如:
let response = '"Result": "Sucess", "MotorList": [ { "id": "1", "titleen": "Camry", "titlear": "Multi_service"}]'
let json = JSON.parse("{"+response +"}")
现在您可以像
一样访问您的 JSON 对象
json.Result
【解决方案2】:
在提供的响应中,只有“MotorList”值包含有效的 JSON。如果您可以修改服务然后将响应更改为 JSON,这将是理想的解决方案。但是,如果您无法修改服务,则必须使用 XML 阅读器对其进行解析并执行一系列字符串操作以获得所需的值。
例如,以下代码将“MotorList”值提取到 JSON 中:
var parser, xmlDoc;
//Get the value from Ajax
var text = '<string xmlns="http://tempuri.org/">' +
'"Result": "Sucess",' +
'"MotorList": [' +
'{' +
'"id": "1",' +
'"titleen": "Camry",' +
'"titlear": "Multi_service"}]' +
'</string>';
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
//document.getElementById("demo").innerHTML =
var resultString = xmlDoc.getElementsByTagName("string")[0].childNodes[0].nodeValue;
var resultTokens = resultString.substring(resultString.indexOf(',') + 1, resultString.length)
var resultObj = JSON.parse(resultTokens.substring(resultTokens.indexOf(':') + 1, resultTokens.length))
var motorList = resultObj[0]