循环遍历json中的多个项目并分配变量

时间:2019-05-03 08:51:23

标签: javascript json

我正在尝试遍历一些json。 json结果如下:

{
  "items": [{
    "metafield1": "May 22 2019"
  }, {
    "metafield1": null
  }, {
    "metafield1": null
  }, {
    "metafield1": "May 20 2019"
  }]
}

我在ajax调用中得到了这个信息,然后分配了一个变量,然后检查该变量是否存在。

$.ajax({
  type: 'GET',
  url: '/cart?view=alternate.json',
  success: function(result) {
    var obj = JSON.parse(result);
    var del_date = obj.metafield1;
    if (del_date !== null) {
      // do something
    }
  }
})

起初,我在json中只有一个项目,所以工作正常,但是现在您可以看到我有多个项目,因此我需要遍历它们并最终进行比较,因此基本上我需要存储每个项目作为变量。 任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以使用[]运算符像这样使用map函数来处理您的字符串

var string = '[{ "metafield1": "May 22 2019" } , { "metafield1": null } , 
 { "metafield1": null } , { "metafield1": "May 20 2019" } ]';

var metafields = JSON.parse(string).map(function(v){ return v['metafield1']; });

console.log(metafields);

已用新对象更新

let result = {
  "items": [{
    "metafield1": "May 22 2019"
  }, {
    "metafield1": null
  }, {
    "metafield1": null
  }, {
    "metafield1": "May 20 2019"
  }]
};

string = JSON.stringify(result.items);

var metafields = JSON.parse(string).map(function(v){ return v['metafield1']; });

console.log(metafields);

let result = {
  "items": [{
    "metafield1": "May 22 2019"
  }, {
    "metafield1": null
  }, {
    "metafield1": null
  }, {
    "metafield1": "May 20 2019"
  }]
};
//console.log(JSON.stringify(result.items));

//var string = '[{ "metafield1": "May 22 2019" } , { "metafield1": null } , { "metafield1": null } , { "metafield1": "May 20 2019" } ]';

string = JSON.stringify(result.items);

var metafields = JSON.parse(string).map(function(v){ return v['metafield1']; });

console.log(metafields);

答案 1 :(得分:0)

这应该可以工作:

// we set a variable x = to your JSON variable
var x = {
  "items": [{
    "metafield1": "May 22 2019"
  }, {
    "metafield1": null
  }, {
    "metafield1": null
  }, {
    "metafield1": "May 20 2019"
  }]
};

// we update x to be equal to your item field from the object, x is now an array instead of an object
x = x["items"];

for (var i of x) {
  if (i.metafield1 !== null) {
    console.log(i.metafield1);
    // your code here
  }
}