试图打印嵌套的Json

时间:2017-01-11 09:47:44

标签: javascript arrays json

var key = " ";
var myBio = {
              "name":"Sathya",
               "age":"23",
            "position":"Soft.Engineer",
             "email":
                     {
                       "email1":"sathya@gmail.com",
                        "email2":"sathya@knstek.com"},
                     };

for (key in myBio){
   var y = myBio[key]; 
   console.log(key+" : "+ y);   
        }

输出

  • 姓名:Sathya
  • 年龄:23​​
  • 职位:Soft.Engineer
  • 电子邮件:[object Object]

必填项:

  • 姓名:Sathya
  • 年龄:23​​
  • 职位:Soft.Engineer
  • 电子邮件:
    • EMAIL1:sathya@gmail.com
    • EMAIL2:sathya@knstek.com

我可以使用另一个循环单独打印此电子邮件。但我想只用主循环打印。有没有办法用JavaScript做到这一点?

5 个答案:

答案 0 :(得分:0)

function recursion(myBio) {
  for (var key in myBio) {
    if (typeof(myBio[key]) == 'object') {
      recursion(myBio[key]);
    } else {
      alert("Key: " + key + " Values: " + myBio[key]);
    }
  }
}

如果你有嵌套的json

,请使用这个子程序

答案 1 :(得分:0)

您可以使用recursive函数来完成此操作。示例

function logRecursive(object){
  for (key in object){
  var value=object[key];
  if(typeof value === 'object'){
     console.log('{');
     logRecursive(value)
     console.log('}');
  }else{
    console.log(value);
  }
}

答案 2 :(得分:0)

试试这个:

var myBio = {
    "name" : "Sathya",
    "age" : "23",
    "position" : "Soft.Engineer",
    "email" : {
        "email1" : "sathya@gmail.com",
        "email2" : "sathya@knstek.com"
    },
};

function print(bio) {
  for (var key in bio) {
    if (typeof(bio[key]) == 'object') {
      print(bio[key]);
    } else {
      console.log(key + ": " + bio[key]);
    }
  }
}

print(myBio);

答案 3 :(得分:0)

试试这个:

var myBio = {
    "name":"Sathya",
    "age":"23",
    "position":"Soft.Engineer",
    "email": {
        "email1":"sathya@gmail.com",
        "email2":"sathya@knstek.com"
    }
};

var result = parseJSON(myBio);

console.log(result);

function parseJSON(obj) {
    var parsedData = '';
    for(var i in obj) {
        if (typeof obj[i] == 'object') {
            parsedData += parseJSON(obj[i]);
        }else {
            parsedData += i +' : '+ obj[i];
        }//end if
        parsedData += '\n';
    }//end for
    return parsedData;
}//end function

答案 4 :(得分:0)

大多数在 Google 中搜索并找到此问题的人可能正在寻找这样的内容:

console.log(JSON.stringify(object, null, 2));

这会将深度嵌套的 JSON 打印到控制台,而不会出现烦人的“[Object]”。

最后两个参数是可选的。 2 表示以 2 的缩进漂亮地打印 JSON。如果留空,将输出非格式化的 JSON。

这不能回答这个具体问题,但希望能回答那些搜索“打印嵌套 JSON Javascript”的人。