【问题标题】: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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-03
        • 1970-01-01
        相关资源
        最近更新 更多