如何使用Javascript遍历返回的JSON字符串?

时间:2019-03-27 10:56:54

标签: javascript jquery json

我有一个API端点,它以以下格式返回一些数据。

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3",
}

我认为能够遍历此JSON有效负载中的每个键值对相对微不足道,但是我似乎对此有误。我下面使用的代码是用来首先将JSON从字符串格式解析为变量的代码,然后我要遍历JSON对象中的每个键,检索键和值,然后对这两个值进行处理

var dictionary = JSON.parse(data);

for (var key in dictionary) {
    var identifier = key;
    var identifierValue = dictionary[key];

    //do stuff..

我不确定for()在这种情况下是否有效,我该如何精确遍历JSON对象中的每个键值对?

我的问题是我似乎无法访问它们保存在字典变量中的键或值。似乎for循环无法正常工作,这让我感到它对于此用例无效。如果这是C#,则必须执行类似于

的操作
for(var key in dictionary.keySet)
{
    //do...
}

我正在寻找JS中的等效项。

5 个答案:

答案 0 :(得分:0)

您发布的代码看起来不错,但是还有其他方法可以遍历对象:

Object.keys(jsonObject)
  .forEach(function eachKey(key) { 
    alert(key); // alerts key 
    alert(jsonObject[key]); // alerts value
  });

答案 1 :(得分:0)

您的方法很好。 您迭代字典,它将把密钥存储在var key中。

要访问此迭代数组的值,只需使用键即可访问该数组。

for (var key in dictionary) {
    if (dictionary.hasOwnProperty(key)) {
         var value = dictionary[key]
         console.log(key + '=>' + value);
    }
}

答案 2 :(得分:0)

您自己的代码似乎还不错。不知道为什么它会从显示的代码中引发错误。

我评论过的Object.entries()示例如下:

const data_json = '{"key1":"value1","key2":"value2","key3": "value3"}';
const dictionary = JSON.parse( data_json );
Object.entries( dictionary ).forEach(([ key, value ]) => {
  console.log( `found key ${ key } with value ${ value }` );
});

答案 3 :(得分:0)

您似乎想知道其他方法。可能还有其他方式

Object.entriesforEach()

let obj = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

Object.entries(obj).forEach(([key, value]) => {
  console.log(key);
  console.log(value)
})

Object.keysforEach()

let obj = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

Object.keys(obj).forEach(key => {
  console.log(key);
  console.log(obj[key])
})

答案 4 :(得分:0)

如果您的API数据用引号引起来,那么您需要在运行迭代器之前使用JSON.parse

var data = '{"key1": "BMW", "key2": "Volvo", "key3": "Saab", "key4": "Ford"}';

var cars = JSON.parse(data);

Object.keys(cars).forEach(function(key) {
    console.log(key + "=" + cars[key]);
});

如果数据是普通对象,则无需使用JSON.parse

var cars = {"key1": "BMW", "key2": "Volvo", "key3": "Saab", "key4": "Ford"};

Object.keys(cars).forEach(function(key) {
    console.log(key + "=" + cars[key]);
});