【问题标题】:How to get the names of the inner JSON如何获取内部 JSON 的名称
【发布时间】:2016-05-18 23:24:12
【问题描述】:

我正在从记录中的数据库中获取一些信息,并将其转换为 JSON 表示法。

但现在,我不知道如何只读取列名。

看这个例子:

http://www.jsoneditoronline.org/?id=1bccb6d9522392f4763d58e24ff4a8e6

我需要读取 GND_AREA、DCR_AREA 的名称。

编辑:

有些人在下面给出了一些可行的答案,但我认为我没有正确解释我想要什么。

我的对象有一个名为“List”的键,因为 JSON 具有这种结构:

我想检索字符串名称。不是价值观....

示例:我想要下面的那些字符串,因为这些字符串是我的列名,它们可以根据我搜索数据的表而改变。

GND_AREA、DCR_AREA、DCR_EQUIP 等.....

P.S:这里对javascript真的很陌生

结束编辑


我尝试了在这里找到的所有可能性,但我不知道我的 JSON 表示法是否正确......

我试图用 java 脚本来做这个。

我尝试的最后一个是这个:

Object.keys(obj).forEach(function (key) {
               console.log (obj[key].name)
            });

这是我的字符串:

{
  "List": [
    {
      "GND_AREA": "Redução",
      "DCR_AREA": "Alto Forno 1",
      "DCR_EQUIP": "AF1-Conjunto de Sopro 01 a 28",
      "DCR_TECNCA": "Monitoramento",
      "DCR_DCPLNA": "Temperatura",
      "COD_POSIC": "61019",
      "DCR_POSIC": "OB-F1-RE-ANVE-CJSO-01A05",
      "DCR_POSFUN": "Conjunto de Sopro 01-05 do Anel de Vento do Alto Forno 1",
      "DCR_PNTINS": "Algaraviz 1",
      "DAT_INSP": "23/2/2016 21:28:48",
      "VLR_DP_DESVIO": "",
      "VLR_LTURA": "450",
      "VLR_DMA_DESVIO": "350",
      "COD_UNDMED": "°C "
    },
    {
      "GND_AREA": "Redução",
      "DCR_AREA": "Alto Forno 1",
      "DCR_EQUIP": "AF1-Conjunto de Sopro 01 a 28",
      "DCR_TECNCA": "Monitoramento",
      "DCR_DCPLNA": "Temperatura",
      "COD_POSIC": "61019",
      "DCR_POSIC": "OB-F1-RE-ANVE-CJSO-01A05",
      "DCR_POSFUN": "Conjunto de Sopro 01-05 do Anel de Vento do Alto Forno 1",
      "DCR_PNTINS": "Algaraviz 1",
      "DAT_INSP": "24/2/2016 21:37:49",
      "VLR_DP_DESVIO": "",
      "VLR_LTURA": "140",
      "VLR_DMA_DESVIO": "350",
      "COD_UNDMED": "°C "
    }
  ]
}

【问题讨论】:

  • 一旦将 JSON 转换为 Javascript 对象,“List”属性就只是一个对象数组。您可以像访问任何其他对象一样访问这些对象。要获取属性,请使用for (var property in obj),请参阅:How do I enumerate properties。不要忘记使用hasOwnProperty() 仅获取您的 JSON 指定的成员

标签: javascript html json asp-classic


【解决方案1】:

这可能有助于解释。将这些函数放入您的代码中并调用 init() 它将在控制台中显示 JSON 的属性。

function display(obj, lvl) {
    var tab = Array(lvl + 1).join("\t");
    for (var property in obj) {
        var type = typeof obj[property];
        if (obj.hasOwnProperty(property)) {
            console.log(tab+"'"+property + "' of type "+type+" and value: "+obj[property]);
        }
        if (type == 'object') {
            console.log(tab+"which has the following properties:");
            display(obj[property], lvl + 1);
        }
    }
}
function init() {
    var json = '{"List":[{"GND_AREA": "Redução","DCR_AREA": "Alto Forno 1","DCR_EQUIP": "AF1-Conjunto de Sopro 01 a 28","DCR_TECNCA": "Monitoramento","DCR_DCPLNA": "Temperatura","COD_POSIC": "61019","DCR_POSIC": "OB-F1-RE-ANVE-CJSO-01A05","DCR_POSFUN": "Conjunto de Sopro 01-05 do Anel de Vento do Alto Forno 1","DCR_PNTINS": "Algaraviz 1","DAT_INSP": "23/2/2016 21:28:48","VLR_DP_DESVIO": "","VLR_LTURA": "450","VLR_DMA_DESVIO": "350","COD_UNDMED": "°C "},{"GND_AREA": "Redução","DCR_AREA": "Alto Forno 1","DCR_EQUIP": "AF1-Conjunto de Sopro 01 a 28","DCR_TECNCA": "Monitoramento","DCR_DCPLNA": "Temperatura","COD_POSIC": "61019","DCR_POSIC": "OB-F1-RE-ANVE-CJSO-01A05","DCR_POSFUN": "Conjunto de Sopro 01-05 do Anel de Vento do Alto Forno 1","DCR_PNTINS": "Algaraviz 1","DAT_INSP": "24/2/2016 21:37:49","VLR_DP_DESVIO": "","VLR_LTURA": "140","VLR_DMA_DESVIO": "350","COD_UNDMED": "°C "}]}';
    var obj = JSON.parse(json);
    console.log("My JSON has properties named:");
    display(obj, 1);
}

附: obj.propertyobj['property'] 的语法糖

【讨论】:

    【解决方案2】:

    试试这个: Working Example

    var t = setToYourString;
    
    t.List.forEach(function(el){
      console.log(el.GND_AREA, el.DCR_AREA);
    });
    

    你想要对象的属性而不是值:

    t.List.forEach(function(el){
      var obj = el;
      for (var prop in el) {
        console.log(prop);
      }
    });
    

    https://jsbin.com/qudeda/6/edit?js,console

    在您的代码中,name 不在该对象上,您尝试读取对象上的属性的方式需要一个名为 name 的键,但它没有。但是它确实有List

    【讨论】:

      【解决方案3】:

      假设您将字符串存储在变量 jsonString 中。然后,您可以解析它并读取所需的属性(这里我将信息存储在两个数组中)。

      var jsonString = JSON.parse('{"List": [{"GND_AREA": "Redução","DCR_AREA": "Alto Forno 1"},{"GND_AREA": "Aumento","DCR_AREA": "Alto Forno 2"}]}');
      
      var gndAreas = [];
      var dcrAreas = [];
      
      for(var i = 0; i < jsonString.List.length; i++){
      
         gndAreas.push(jsonString.List[i].GND_AREA);
         dcrAreas .push(jsonString.List[i].DCR_AREA);
      
      }
      

      【讨论】:

        【解决方案4】:

        感谢@JordanHendrix 和@Tibrogargan!

        这两种方法都有效!我只是稍微修改了一下。

        @JordanHendrix 提供的方法:

        var obj = t.List[0];
        for (var prop in obj) {
          console.log(prop);
        }
        

        https://jsbin.com/gufubevozo/edit?js,console

        @Tibrogargan 提供的方法:

        function display(obj2, lvl) {
        var tab = Array(lvl + 1).join("\t");
        
        var obj = obj2.List[0];
        
        var i = 0;
        var loop = 0;
        
        for (var property in obj) {
            var type = typeof obj[property];
        
            if (obj.hasOwnProperty(property)) {
                console.log(property);                        
            } 
        }
        

        }

        https://jsbin.com/qomunayiko/edit?js,console

        我标记了 Tibrogargan 的答案,因为它更完整。

        【讨论】:

          猜你喜欢
          • 2016-08-13
          • 1970-01-01
          • 2020-02-15
          • 1970-01-01
          • 2017-07-06
          • 2016-11-05
          • 1970-01-01
          • 1970-01-01
          • 2018-07-19
          相关资源
          最近更新 更多