我有一个多层JSon,需要遍历并获取其列名和值。
var json {
"Students":[
{
"name":{
"value":"Allan"
},
"number":{
"value":"123"
}
},
{
"name":{
"value":"Frank"
},
"number":{
"value":"456"
}
}
]
}
我可以遍历并获取列名,但是无法获取值。
var objectKeys = Object.keys(json);
for (var key in objectKeys)
{
var student = json.Students;
for (var i = 0; i < student .length; i++) {
for (var column in json.Students[i])
{
window.print(column);
window.print(column.value);
}
}
}
以上内容为我提供了以下
name
undefined
number
undefined
name
undefined
number
undefined
理想情况下,我想单独对待一行,以便可以将其插入数据库中,例如针对学生表的名称和数字列插入Allan和123。
答案 0 :(得分:1)
var objectKeys = Object.keys(json);
for (var key in objectKeys)
{
var student = json.Students;
for (var i = 0; i < student .length; i++) {
for (var column in json.Students[i]) {
window.print(column);
window.print(json.Students[i][column].value);
}
}
}
由于未使用外部for循环中的key
,因此是多余的
答案 1 :(得分:0)
var objectKeys = Object.keys(json);
for (var key in objectKeys) {
var student = json.Students;
for (var i = 0; i < student .length; i++) {
window.print(json.Students[i].name.value);
window.print(json.Students[i].number.value);
}
}
答案 2 :(得分:0)
您的JSON对象包含1个条目,其中包含 key 学生和 value ,其中包含2个词典的列表。
所以var objectKeys = Object.keys(json);
代表一个值“学生”
在实例化此变量键时似乎并没有使用var key in objectKeys
,但是从不使用它。
如果您要遍历字典,请像这样重新编写代码:
var json {
"Students":[
{
"name":{
"value":"Allan"
},
"number":{
"value":"123"
}
},
{
"name":{
"value":"Frank"
},
"number":{
"value":"456"
}
}
]
}
for(let i = 0; i < json["Students"].length; i++){
let key_values = Object.keys(json["Students"][i]);
for(let inner_key_values in key_values){
window.print(json["Students"][i][inner_key_values].value);
}
}
答案 3 :(得分:0)
我为您编写了以下代码段-它以递归方式打印嵌套对象。您可以根据需要对其进行修改。
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3",
"p4": {
"p4": 'value 4'
}
};
/**
* Printing a nested javascript object
*/
function jsonPrinter(obj) {
for (let key in obj) {
// checking if it's nested
if (obj.hasOwnProperty(key) && (typeof obj[key] === "object")) {
jsonPrinter(obj[key])
} else {
// printing the flat attributes
console.log(key + " -> " + obj[key]);
}
}
}
jsonPrinter(p);