Json解析器和循环方案

时间:2019-04-02 06:41:36

标签: javascript json

如何使用脚本循环json文件,例如:我应该选择是循环模式A还是模式B。

我的json文件为:

{
   "A":[
      {
         "id":"1",
         "title":"Primo"
      },
      {
         "id":"2",
         "title":"Secondo"
      }
   ],
   "B":[
      {
         "id":"1",
         "title":"Primo"
      },
      {
         "id":"2",
         "title":"Secondo"
      }
   ]
}   

也许设置一个变量来定义我必须显示的方案

我的javascript文件是:

var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";

xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var myArr = JSON.parse(this.responseText);
    myFunction(myArr);
  }
};
xmlhttp.open("GET", url, true);
xmlhttp.send();

function myFunction(arr) {
  var out = "";
  var i;
  for(i = 0; i < arr.length; i++) {
    out += arr[i].id + ' - ' + arr[i].title + '<br>';
  }
  document.getElementById("id01").innerHTML = out;
}

2 个答案:

答案 0 :(得分:0)

var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";

xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var obj= JSON.parse(this.responseText);
    myFunction(obj, 'A');
  }
};
xmlhttp.open("GET", url, true);
xmlhttp.send();

function myFunction(obj, key) {
  var arr = obj[key];
  var out = "";
  var i;
  for(i = 0; i < arr.length; i++) {
    out += arr[i].id + ' - ' + arr[i].title + '<br>';
  }
  document.getElementById("id01").innerHTML = out;
}

答案 1 :(得分:0)

假设您以JSON文件形式显示的内容是一个响应表单网络并传递给myFunction,那么为什么不做类似的事情:

let myRootArray;
if(/* some confitions */) {
  myRootArray = myArr.A
} else {
  myRootArray = myArr.B
}
myFunction(myRootArray );

除此之外,var myArr = JSON.parse(this.responseText);的名称有点令人困惑,而JSON.parse将返回对象,而不是数组。