【问题标题】:How to convert Json into associative array or key value array如何将Json转换为关联数组或键值数组
【发布时间】:2018-09-04 09:38:31
【问题描述】:

我有以下需要插入到表中的 Json。 我想将每个学生的详细信息转换成一行。 因为如果我按照现有结构循环遍历行,我会将一列作为一行读取。

var json   {  
       "Students":[  
          {  
             "name":{  
                "value":"Allan"
             },
             "number":{  
                "value":"123"
             }
          },
          {  
             "name":{  
                "value":"Frank"
             },
             "number":{  
                "value":"456"
             }
          }
       ]
    }

理想情况下,我希望以上内容

{ "name": "Allan", "number": 123}; 
{ "name": "Frank", "number": 456}; 

我正在循环遍历 Json,如下所示

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);

            }

        }
    }

注意:没有JQuery,想通过普通的Javascript实现以上。

【问题讨论】:

    标签: javascript arrays json


    【解决方案1】:

    如果要转换数据,可以使用Array.map

    var json = {"Students":[{"name":{"value":"Allan"},"number":{"value":"123"}},{"name":{"value":"Frank"},"number":{"value":"456"}}]};
    
    let result = json.Students.map(o => ({
      name: o.name.value,
      number: o.number.value
    }));
    
    console.log(result);

    如果要访问数据,可以使用Array.forEach

    var json = {"Students":[{"name":{"value":"Allan"},"number":{"value":"123"}},{"name":{"value":"Frank"},"number":{"value":"456"}}]};
    
    json.Students.forEach(o => console.log({name: o.name.value, number: o.number.value}));

    【讨论】:

    • Hi Nikhil,我们的编译器不支持 Jquery,可以用简单的 javascript 来完成
    • @HakanSukar - 它只是简单的 Javascript。
    【解决方案2】:
    var json = {  
       "Students":[  
          {  
             "name":{  
                "value":"Allan"
             },
             "number":{  
                "value":"123"
             }
          },
          {  
             "name":{  
                "value":"Frank"
             },
             "number":{  
                "value":"456"
             }
          }
       ]
    }
    
    var studentData = JSON.stringify(json.Students);
    var convertedData = JSON.parse(studentData.replace(/\{\"value\"\:/g,"").replace(/\}\,\"number/g,',"number').replace(/\"\}\}/g,'"}')); 
    

    试试这个:)

    【讨论】:

    • 您好 Nishikant,感谢您回答我如何遍历该数组并读取每个名称和数字。 for (var i = 0; i
    • 是的,一旦您在对象数组中获得转换后的数据,就可以使用任何有效的循环来遍历数组,例如 for、forEach 或 map。数组中的每个值都是一个对象,因此您可以读取其属性
    【解决方案3】:

    没有 map 或 reduce。只是经典的 Javascript。

    var json = {
      "Students": [{
          "name": {
            "value": "Allan"
          },
          "number": {
            "value": "123"
          }
        },
        {
          "name": {
            "value": "Frank"
          },
          "number": {
            "value": "456"
          }
        }
      ]
    };
    
    for (var student of json["Students"]) {
      console.log(student); //your logic goes here.
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多