我有一个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中的等效项。
答案 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.entries
和forEach()
let obj = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Object.entries(obj).forEach(([key, value]) => {
console.log(key);
console.log(value)
})
Object.keys
和forEach()
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]);
});