Как анализировать данные в формате JSON с помощью JavaScript? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть внешний файл JSON с именем devices.json с таким содержимым:

{
  "Android":[
    {"modell":"Samsung Galaxy S9+", "version":"8.0", "formfactor":"smartphone"},
    {"modell":"Google Pixel 2XL", "version":"9.0", "formfactor":"smartphone"},
    {"modell":"OnePlus One+", "version":"7.1.1", "formfactor":"smartphone"},
    {"modell":"Motorola Moto G (3rd Generation)", "version":"6.0.1", "formfactor":"smartphone"},
    {"modell":"Motorola Moto G (1st Generation)", "version":"5.1", "formfactor":"smartphone"},
    {"modell":"Phicomm Clue C230", "version":"4.3", "formfactor":"smartphone"},
    {"modell":"Huawei MediaPad M3 Lite 8", "version":"7.0", "formfactor":"tablet"},
    {"modell":"Xiaomi Mi Pad", "version":"5.1", "formfactor":"tablet"},
    {"modell":"Samsung Galaxy Tab 3 (7.0) Lite", "version":"4.2.2", "formfactor":"tablet"},
    {"modell":"Amazon Fire Tablet 7 (5th Gen)", "version":"Fire OS 5.3.3", "formfactor":"tablet"}
  ],
  "iOS":[
    {"modell":"iPhone 7", "version":"12beta", "formfactor":"smartphone"},
    {"modell":"iPhone 5s", "version":"11.4.1", "formfactor":"smartphone"},
    {"modell":"iPad Air", "version":"11.4.1", "formfactor":"tablet"},
    {"modell":"iPad 3", "version":"9.3.5", "formfactor":"tablet"}
  ],
  "Windows":[
    {"version":"Windows 10"},
    {"version":"Windows 8.1"},
    {"version":"Windows 7"}
  ],
  "macOS":[
    {"modell":"Macbook Air", "version":"10.13.5"}
  ],
  "Linux":[
    {"version":"Mint"},
    {"version":"Kubuntu"},
    {"version":"elemetaryOS"},
    {"version":"openSUSE"},
    {"version":"CentOS"},
    {"version":"Fedora"},
    {"version":"Oracle Linux"},
    {"version":"Red Hat"}
  ]
}

Теперь я хочу проанализировать это с помощью нажатия кнопки и получить вывод, подобный этому:

Samsung Galaxy S9 + (Android 8.0), Google Pixel 2XL (Android 9), OnePlus One и т. Д. *

Я не знаю, как лучше всего проанализировать JSON.

Как то так?

<script>
   function getArray(){
    return $.getJSON('devices.json');
}

getArray().done( function(json) {
    console.log(json); // show the json data in console

    // Android
    for(var i = 0; i < json.Android.length; i++) {
        var obj = json.Android[i];

        console.log(obj);
    }

    // Android
    for(var i = 0; i < json.iOS.length; i++) {
        var obj = json.iOS[i];

        console.log(obj);
    }

});
</script>

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Если у вас есть json в переменной myjson, тогда эта функция вам нужна.

function getDevices(){
      var deviceString = '';
      for(var key in myjson) {
        var myOS = myjson[key];
          for(var subkey in myOS){
            if(myOS[subkey].modell){
              deviceString += myOS[subkey].modell + " ";
            }
             deviceString += "(" + key + " "+ myOS[subkey].version + ") ";
          }
      }
      console.log(deviceString);
    }
0 голосов
/ 27 сентября 2018

Просто map json.Android и зарегистрируйте значения.

var data ={
  "Android":[
    {"modell":"Samsung Galaxy S9+", "version":"8.0", "formfactor":"smartphone"},
    {"modell":"Google Pixel 2XL", "version":"9.0", "formfactor":"smartphone"},
    {"modell":"OnePlus One+", "version":"7.1.1", "formfactor":"smartphone"},
    {"modell":"Motorola Moto G (3rd Generation)", "version":"6.0.1", "formfactor":"smartphone"},
    {"modell":"Motorola Moto G (1st Generation)", "version":"5.1", "formfactor":"smartphone"},
    {"modell":"Phicomm Clue C230", "version":"4.3", "formfactor":"smartphone"},
    {"modell":"Huawei MediaPad M3 Lite 8", "version":"7.0", "formfactor":"tablet"},
    {"modell":"Xiaomi Mi Pad", "version":"5.1", "formfactor":"tablet"},
    {"modell":"Samsung Galaxy Tab 3 (7.0) Lite", "version":"4.2.2", "formfactor":"tablet"},
    {"modell":"Amazon Fire Tablet 7 (5th Gen)", "version":"Fire OS 5.3.3", "formfactor":"tablet"}
  ],
  "iOS":[
    {"modell":"iPhone 7", "version":"12beta", "formfactor":"smartphone"},
    {"modell":"iPhone 5s", "version":"11.4.1", "formfactor":"smartphone"},
    {"modell":"iPad Air", "version":"11.4.1", "formfactor":"tablet"},
    {"modell":"iPad 3", "version":"9.3.5", "formfactor":"tablet"}
  ],
  "Windows":[
    {"version":"Windows 10"},
    {"version":"Windows 8.1"},
    {"version":"Windows 7"}
  ],
  "macOS":[
    {"modell":"Macbook Air", "version":"10.13.5"}
  ],
  "Linux":[
    {"version":"Mint"},
    {"version":"Kubuntu"},
    {"version":"elemetaryOS"},
    {"version":"openSUSE"},
    {"version":"CentOS"},
    {"version":"Fedora"},
    {"version":"Oracle Linux"},
    {"version":"Red Hat"}
  ]
};
//Samsung Galaxy S9+ (Android 8.0), Google Pixel 2XL (Android 9), OnePlus One etc...

function test(){
  console.log(data.Android.map(function(item){
    return item.modell;
  }).join(', '));
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <button onclick="test()">Parse</button>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...