[英]How to parse data in the JSON format using JavaScript?
我有一个名为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+ (Android 8.0)、Google Pixel 2XL (Android 9)、一加 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>
只需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>
假设您将 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.