2016-02-03 2 views
0

У меня есть Arduino Yun, где я размещаю веб-страницу. Теперь я хочу показать качество сигнала Wi-Fi на этой странице. Мне удалось выкопать в системе, и я могу всплывал этот JSON-массив какКомплекс JSON-массив

{ 
    "conncount": 5, 
    "leases": { 

    }, 
    "wan": { 
    "proto": "dhcp", 
    "ipaddr": "192.168.0.13", 
    "link": "/cgi-bin/luci/;stok=235c7aba0f5cbf5cf752ad119ece74e6/admin/network/network/lan", 
    "netmask": "255.255.255.0", 
    "gwaddr": "192.168.0.1", 
    "expires": -1, 
    "uptime": 4407, 
    "ifname": "wlan0", 
    "dns": [ 
     "192.168.0.1" 
    ] 
    }, 
    "membuffers": 15708, 
    "connmax": 16384, 
    "memfree": 1576, 
    "uptime": 4481, 
    "wifinets": [ 
    { 
     "device": "radio0", 
     "networks": [ 
     { 
      "ifname": "wlan0", 
      "encryption": "WPA2 PSK (CCMP)", 
      "bssid": "04:A1:51:D3:BC:E8", 
      "mode": "Client", 
      "quality": 70, 
      "noise": -95, 
      "ssid": "Skynet-ITA", 
      "link": "/cgi-bin/luci/;stok=235c7aba0f5cbf5cf752ad119ece74e6/admin/network/wireless/radio0.network1", 
      "assoclist": { 
      "04:A1:51:D3:BC:E8": { 
       "rx_short_gi": true, 
       "noise": -95, 
       "rx_mcs": 7, 
       "tx_40mhz": true, 
       "rx_40mhz": true, 
       "tx_rate": 135000, 
       "tx_packets": 14825, 
       "tx_short_gi": true, 
       "rx_packets": 101935, 
       "tx_mcs": 6, 
       "inactive": 360, 
       "rx_rate": 150000, 
       "signal": -61 
      } 
      }, 
      "txpoweroff": 0, 
      "bitrate": 135, 
      "txpower": 16, 
      "name": "Client \u0022Skynet-ITA\u0022", 
      "channel": 6, 
      "country": "NL", 
      "signal": -61, 
      "up": true, 
      "frequency": "2.437" 
     } 
     ], 
     "name": "Generic 802.11bgn Wireless Controller (radio0)", 
     "up": true 
    } 
    ], 
    "memtotal": 61116, 
    "localtime": "Wed Feb 3 12:09:13 2016", 
    "memcached": 17596, 
    "loadavg": [ 
    0.04052734375, 
    0.125, 
    0.20263671875 
    ] 
} 

К сожалению, это так, как он приходит, и я не могу изменить его и я не знаю, как это получается.

Есть ли способ извлечь бит, который говорит «Качество»: 70?

Я попробовал его со следующим кодом, но не повезло (он вернулся как неопределенный). Я использовал данные [3], поскольку он выглядит как несколько массивов, а Quality - в 4-м.

var q; 

$(document).ready(function() { 
var refresh = setInterval(getData, 5000); 
}); 

function getData() { 
$.ajax({ 
     type: "POST", 
     url: "/cgi-bin/luci/;stok=6ea83154346f9c42e99ac14ae8856b2b?status=1&_=0.16447926725451678", 
     dataType: "JSON", 
     cahce: "false", 
     success: function(data){ 
     q = data[3].quality; 
} 
}); 
} 
+3

Это значение в 'data.wifinets [0] .networks [0] .quality', если вы копировать/вставить в jsonlint.com, и нажмите кнопку Проверить. Его легче увидеть структуру – dan08

+0

Спасибо за перегруппировку моего массива. Я мог бы сразу заметить это прямо сейчас с помощью ответов ниже! Иногда это проще, чем вы думаете, это так :) –

+0

Кто-нибудь знает, почему мой обновленный div все еще не определился? –

ответ

1

попробовать этот

var quality=data['wifinets'][0]['networks'][0]['quality']; 
alert(quality); 
+0

Работала для меня. Не сложно в конце, как только вы увидите структуру;) Предупреждение появляется прекрасно, только div-refresh все еще говорят undefined. Мне нужно больше кодирования, я думаю, –

+0

спасибо @Arjan_IO. Не стесняйтесь комментировать здесь, если что-то более необходимо :) –

3

Попробуйте разобрать его с JSON парсер (например http://json.parser.online.fr/)

Затем, вы можете следовать по пути к качеству:

data.wifinets[0].networks[0].quality 
+0

Легче читать, когда помещается в парсер json. Код Op не был отформатирован, когда он представил свой вопрос. – blue112

1

Самый простой способ, который работает для меня, - это просто вставить этот json в консоль разработчика Chrome, например: data = { "conncount": 5, ... }. Chrome представляет объекты в читаемой форме. Вы можете пробиться через него с расширением свернутых объектов/массивов.

enter image description here

+0

Извините, что спросила. Но является ли это программой или частью браузера Chrome? В случае последнего, имел ли FF эту функцию тоже? –

+1

Это часть браузера Google Chrome. FF и IE также имеют это. Просто нажмите F12. – drinovc

Смежные вопросы