【问题标题】:Get element from json array javascript [closed]从json数组javascript中获取元素[关闭]
【发布时间】:2019-08-15 11:14:05
【问题描述】:

我有一个简单的 Json 字符串

[
   {
      "assetName":"LCT",
      "assetValue":"",
      "typeValueInput":"select",
      "valueInputSelect":null,
      "required":true,
      "valueInput":"{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
   }
]

我想通过 Javascript 获取 ValueInput 中数据中的字段名称。

请帮帮我!

【问题讨论】:

  • 可以使用JSON.parse将json转成object。
  • 为什么会有七票?它没有显示 OP 所做的任何努力。他们尝试了什么?什么没有奏效? stackoverflow.com/help/how-to-ask

标签: javascript arrays json object


【解决方案1】:

您需要遍历数组,然后解析字符串化的 JSON,以便您可以访问 data 数组。然后简单地循环 data 数组以获取每个 name 属性的值。

var arr = [{
  "assetName": "LCT",
  "assetValue": "",
  "typeValueInput": "select",
  "valueInputSelect": null,
  "required": true,
  "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
}];

arr.forEach((arrObj) => {
  var jsonData = JSON.parse(arrObj.valueInput);
  jsonData.data.forEach(({name}) => console.log(name));
});

【讨论】:

    【解决方案2】:

    你可以使用JSON.parse

    var jsonArray = [
      {
        assetName: 'LCT',
        assetValue: '',
        typeValueInput: 'select',
        valueInputSelect: null,
        required: true,
        valueInput:
          '{"data":[{"name":"name1","id":"12"},{"name":"name2","id":"13"},{"name":"name3","id":"14"}]}'
      }
    ];
    
    let name = jsonArray[0].valueInput;
    name = JSON.parse(name);
    name.data.forEach(value => {
      console.log(value.name, value.id);
    });

    【讨论】:

      【解决方案3】:

      使用JSON.parse,并使用map

      const data = [{
        "assetName": "LCT",
        "assetValue": "",
        "typeValueInput": "select",
        "valueInputSelect": null,
        "required": true,
        "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
      }]
      const names = JSON.parse(data[0].valueInput).data.map(({ name }) => name);
      console.log(names);

      【讨论】:

        【解决方案4】:

        您可以使用JSON.parse

        JSON.parse(o[0].valueInput).data[0].name
        

        var o = [
           {
              "assetName":"LCT",
              "assetValue":"",
              "typeValueInput":"select",
              "valueInputSelect":null,
              "required":true,
              "valueInput":"{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
           }
        ]
        
        console.log(JSON.parse(o[0].valueInput).data[0].name);
        
        // To get all, use a loop
        
        var arrO = JSON.parse(o[0].valueInput).data;
        
        arrO.forEach((obj) => console.log(obj.name))

        【讨论】:

        • @Deepakgupta data[0] 不是字符串,数组是之前解析的。在发表评论之前查看现场演示
        • 输入值是字符串,不是对象,字符串没有正确字符串化。
        • @AZ_ 输入值不是字符串。杰克做了一些糟糕的编辑
        • 它说 我有一个简单的 Json 字符串 不确定。
        • @AZ_ 是的,他有一个 json 字符串到密钥 valueInput
        【解决方案5】:

        您可以使用array 变量和JSON.parse 的回调函数来获取名称key & val

        let dt = [{
          "assetName": "LCT",
          "assetValue": "",
          "typeValueInput": "select",
          "valueInputSelect": null,
          "required": true,
          "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
        }];
        let nameArray = [];
        
        let dlt = JSON.parse(dt[0].valueInput, function(key, val) {
          if (key === 'name') {
            nameArray.push(val);
          }
        })
        
        console.log(nameArray)

        【讨论】:

          【解决方案6】:

          这是一种方法。

          let originalData = [
             {
                "assetName":"LCT",
                "assetValue":"",
                "typeValueInput":"select",
                "valueInputSelect":null,
                "required":true,
                "valueInput":"{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
             }
          ];
          
          let valueInput = JSON.parse(originalData[0].valueInput);
          
          let data = valueInput.data;
          
          console.log(data);
          
          for (var i = 0; i < data.length; i++){
              console.log(data[i].name);
          }
          

          见 jsfiddle https://jsfiddle.net/3s1na4eL/3/

          如果有任何问题,请告诉我。

          【讨论】:

            【解决方案7】:

            你可以这样做:

            const arr = [{"assetName": "LCT","assetValue": "","typeValueInput": "select","valueInputSelect": null,"required": true,"valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"}];
            
            arr.forEach(o => JSON.parse(o.valueInput).data.forEach(({id, name}) => console.log(id, name)));

            【讨论】:

              猜你喜欢
              • 2013-04-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-02-22
              • 2013-02-05
              • 2021-06-29
              相关资源
              最近更新 更多