Разбор json и создание таблицы на html в Javascript

У меня есть следующий файл json, который я читаю с кодом ниже.

{
    "17.216.30.177": {
        "agent": {
            "agent_ip": "17.216.30.177",
            "agent_cpu_type": "Intel Core i5",
            "agent_serial_num": "C02KQ00CFH46",
            "agent_hostname": "Beautiful-iMac.local",
            "agent_ram": "16 GB",
            "agent_processors": "4",
            "agent_system_type": "iMac14_2"
        },
        "devices": {
            "fedaa89792fdf9bcfe819cc9981bcda918dc1fa6": {
                "SerialNumber": "",
                "HardwareModel": "abc",
                "WiFiAddress": "abc",
                "BuildVersion": "abc",
                "kanzi": "315D0F",
                "current_state": 1,
                "UniqueChipID": "612806844428"
            },
            "47d46975e929d679f1c0713f7b060bf80390aeb9": {
                "SerialNumber": "",
                "HardwareModel": "lmn",
                "WiFiAddress": "lmn",
                "BuildVersion": "lmn",
                "kanzi": "315DF3",
                "current_state": 1,
                "UniqueChipID": "2572890213651"
            }
        },
        "last_alive_time": "2016-04-27 10:24:14"
    },
    "17.153.73.241": {
        "agent": {
            "agent_hostname": "aj-air.local",
            "agent_cpu_type": "Intel Core i5",
            "agent_processors": "2",
            "agent_ip": "17.244.49.99",
            "agent_serial_num": "C02M300KFY3V",
            "agent_system_type": "MacBookAir6_2",
            "agent_ram": "8 GB"
        },
        "devices": {
            "ccd457202545bef923e2d784f0aa30e12c4dfd43": {
                "HardwareModel": "pqr",
                "kanzi": "pqr",
                "SerialNumber": "",
                "current_state": 1,
                "UniqueChipID": "pqr",
                "WiFiAddress": "pqr",
                "BuildVersion": "pqr"
            }
        },
        "last_alive_time": "2016-04-27 10:30:08"
    }
}   


    function readTextFile(file, callback) {
            var rawFile = new XMLHttpRequest();
            rawFile.overrideMimeType("application/json");
            rawFile.open("GET", file, true);
            rawFile.onreadystatechange = function() {
            if (rawFile.readyState === 4 && rawFile.status == "200") {
                callback(rawFile.responseText);
            }
        }
        rawFile.send(null);
    }


    readTextFile("/resources/test.json", function(text){
        var data = JSON.parse(text);
        document.getElementById("demo").innerHTML = data[0]["agent"].agent_ip;
    });

data[0].17.216.30.177["agent"].agent_ip;

как я могу заставить это работать?

Ff это был data[0].xyz["agent"].agent_ip;, он работает хорошо, но из-за периода в ip он не работает


person bruceparker    schedule 04.05.2016    source источник


Ответы (2)


я могу прочитать файл json в объект, но не могу получить определенные значения ключей. Я получаю этот файл как есть с сервера, поэтому не могу иметь массив с [], если это вызывает проблему.

Проблема в том, что вы обращаетесь к нему как к массиву, но у вас нет массива объектов. Таким образом, вы можете преобразовать полученный файл в массив или взять объекты такими, какие они есть, и изменить способ доступа к ним.

Основная проблема будет заключаться в том, что у каждого из них есть уникальный ключ, на который вам нужно будет ссылаться для доступа к данным. Если вы знаете их ключи заранее, вы используете их как ассоциативный массив. Вы можете получить доступ к каждому свойству с помощью '.' оператор.

data["17.153.73.241"].agent.agent_ip; //Agent 2

В противном случае вам нужно будет найти ключ для каждого и использовать его для доступа к этому объекту.

data[key].agent.agent_ip

Я поместил его в jsfiddle о том, как получить доступ к объектам с помощью ключа для этой ситуации.

Использованная литература:

  1. Доступ к элементам объекта JSON без знания имен ключей
  2. перебор javascript объекта json
  3. Доступ/обработка (вложенных) объектов, массивов или JSON
person sidewinderg    schedule 04.05.2016

        readTextFile("/resources/test.json", function(text){
            var data = JSON.parse(text);
            for (var key in data) {
                console.log("Agent IP-->", data[key].agent.agent_ip);
                console.log("Number of devices -->", Object.keys(data[key].devices).length);
                console.log("Total Number of devices -->", Object.keys(data[key].devices).length);
            }

это сработало для меня.

person bruceparker    schedule 04.05.2016