如何使用javascript并根据提供的输入获取我的JSON数据?
我的JSON文件如下所示......
{
"Name1": {
"id": "32313",
"latitude": "57.1",
"longitude": "9.85",
"timezone": "2",
"city": "Aalborg",
"country": "Denmark",
"country_code": "DK"
},
"Name2": {
"id": "32314",
"latitude": "56.15",
"longitude": "10.2167",
"timezone": "2",
"city": "Aarhus",
"country": "Denmark",
"country_code": "DK"
},
"Name3": {
"id": "122109",
"airport_name": "Aasiaat",
"latitude": "68.7",
"longitude": "-52.75",
"timezone": "-3",
"city": "Aasiaat",
"country": "Greenland",
"country_code": "GL"
},
"Name4": {
"id": "116713",
"latitude": "30.371111",
"longitude": "48.228333",
"timezone": "4",
"city": "Abadan",
"country": "Iran",
"country_code": "IR"
},
"Name5": {
"id": "116711",
"latitude": "53.74",
"longitude": "91.385",
"timezone": "7",
"city": "Abakan",
"country": "Russia",
"country_code": "RU"
},
"Name6": {
"id": "120587",
"latitude": "49.05",
"longitude": "-122.2833",
"timezone": "-7",
"city": "Abbotsford",
"country": "Canada",
"country_code": "CA"
},
"Name7": {
"id": "116759",
"latitude": "13.847",
"longitude": "20.844333",
"timezone": "1",
"city": "Abeche",
"country": "Chad",
"country_code": "TD"
},
"Name8": {
"id": "32325",
"latitude": "57.2",
"longitude": "-2.2",
"timezone": "1",
"city": "Aberdeen",
"country": "United Kingdom",
"country_code": "GB"
}
}
从上面的JSON文件...我需要得到以下内容:
请帮我解析上面的JSON文件......
谢谢, Yugandhar
答案 0 :(得分:1)
var info = {
"Name1": {
"id": "32313",
"latitude": "57.1",
"longitude": "9.85",
"timezone": "2",
"city": "Aalborg",
"country": "Denmark",
"country_code": "DK"
},
....
"Name8": {
"id": "32325",
"latitude": "57.2",
"longitude": "-2.2",
"timezone": "1",
"city": "Aberdeen",
"country": "United Kingdom",
"country_code": "GB"
}
}
//stores countries in an array
var countries = [];
//stores cities in an object keyed on the contrycode
var cities = {};
var keyNames = {};
for(var prop in info){
var country = info[prop]["country"];
var country_code = info[prop]["country_code"];
var cityname = info[prop]["city"];
countries.push(country);
var city = cities[country_code];
if(typeof city == "undefined"){
cities[country_code] = [];
}
var key = keyNames[country_code];
if(typeof key == "undefined"){
keyNames[country_code] = [];
}
cities[country_code].push(cityname);
keyNames[country_code].push(prop);
}
console.log(cities);
console.log(countries);
答案 1 :(得分:1)
var countries = [];
// Vanilla Javascript
// Get Array of countries
for( var name in json ){
countries.push(json[name]["country"]);
}
// Get city name based on country name
var getCities = function(country){
var cities = [];
for( var name in json ){
if (country === json[name]["country"]){
cities.push(name);
}
}
return cities;
}
// Usage
var cities = getCities("Denmark"); //
答案 2 :(得分:0)
Underscore.js(http://documentcloud.github.com/underscore/)是javascript库的瑞士军刀,在处理数据集时非常有用。
我创建了一个解决你的两个用例http://jsfiddle.net/4NJPc/
的jsfiddle以下是重要部分:
function getCityData(country) {
return _(data)
.filter(function(el) {
return el.country === country;
});
}
function getCountries() {
return _(data).chain().pluck("country").uniq().value();
}