Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript解析JSON格式的数据?_Javascript_Json_Parsing - Fatal编程技术网

如何使用JavaScript解析JSON格式的数据?

如何使用JavaScript解析JSON格式的数据?,javascript,json,parsing,Javascript,Json,Parsing,我有一个名为devices.JSON的外部JSON文件,其中包含以下内容: { "Android":[ {"modell":"Samsung Galaxy S9+", "version":"8.0", "formfactor":"smartphone"}, {"modell":"Google Pixel 2XL", "version":"9.0", "formfactor":"smartphone"}, {"modell":"OnePlus One+", "versi

我有一个名为
devices.JSON
的外部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"}
  ]
}
现在我想通过点击按钮来解析它,并得到如下输出:

三星Galaxy S9+(安卓8.0)、谷歌像素2XL(安卓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>

函数getArray(){
返回$.getJSON('devices.json');
}
getArray().done(函数(json){
log(json);//在控制台中显示json数据
//安卓
for(var i=0;i
只需
映射
json.Android
并记录值即可

var数据={
“安卓”:[
{“modell”:“三星Galaxy S9+”,“版本”:“8.0”,“formfactor”:“智能手机”},
{“modell”:“谷歌像素2XL”,“版本”:“9.0”,“formfactor”:“智能手机”},
{“modell”:“OnePlus 1+”,“version”:“7.1.1”,“formfactor”:“smartphone”},
{“modell”:“摩托罗拉Moto G(第三代)”,“版本”:“6.0.1”,“formfactor”:“智能手机”},
{“modell”:“摩托罗拉Moto G(第一代)”,“版本”:“5.1”,“formfactor”:“智能手机”},
{“Model”:“Phicomm线索C230”,“版本”:“4.3”,“formfactor”:“smartphone”},
{“Model”:“华为MediaPad M3 Lite 8”,“版本”:“7.0”,“formfactor”:“tablet”},
{“modell”:“小米垫”,“版本”:“5.1”,“formfactor”:“平板电脑”},
{“modell”:“三星Galaxy Tab 3(7.0)Lite”,“版本”:“4.2.2”,“formfactor”:“平板电脑”},
{“modell”:“亚马逊Fire平板电脑7(第5代)”,“版本”:“Fire OS 5.3.3”,“formfactor”:“平板电脑”}
],
“iOS”:[
{“Model”:“iPhone 7”,“version”:“12beta”,“formfactor”:“smartphone”},
{“modell”:“iphone5s”,“version”:“11.4.1”,“formfactor”:“smartphone”},
{“Model”:“iPad Air”,“version”:“11.4.1”,“formfactor”:“tablet”},
{“Model”:“iPad3”,“version”:“9.3.5”,“formfactor”:“tablet”}
],
“窗口”:[
{“版本”:“Windows 10”},
{“版本”:“Windows 8.1”},
{“版本”:“Windows 7”}
],
“macOS”:[
{“modell”:“Macbook Air”,“版本”:“10.13.5”}
],
“Linux”:[
{“版本”:“铸币厂”},
{“版本”:“Kubuntu”},
{“版本”:“elemetaryOS”},
{“版本”:“openSUSE”},
{“版本”:“CentOS”},
{“版本”:“Fedora”},
{“版本”:“Oracle Linux”},
{“版本”:“红帽”}
]
};
//三星Galaxy S9+(安卓8.0)、谷歌像素2XL(安卓9)、OnePlus One等。。。
功能测试(){
console.log(data.Android.map)(函数(项){
returnitem.model;
})。加入(“,”);
}

JS-Bin
作语法分析

假设您将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);
    }
console.log(json.Android.map(item=>item.model.join('),')应该足够了。