简体   繁体   English

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

[英]How to parse data in the JSON format using JavaScript?

I have an external JSON file named devices.json with this content:我有一个名为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"}
  ]
}

Now I want to parse this with a button click and have an output like this:现在我想通过单击按钮来解析它并有这样的输出:

Samsung Galaxy S9+ (Android 8.0), Google Pixel 2XL (Android 9), OnePlus One etc...三星 Galaxy S9+ (Android 8.0)、Google Pixel 2XL (Android 9)、一加 One 等...

I don't really know how to parse the JSON the best way.我真的不知道如何以最好的方式解析 JSON。

Something like this?像这样的东西?

<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>

Just map the json.Android and log the values.只需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>

Assuming you have the json into a variable myjson then this is the function you need.假设您将 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);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM