我需要返回单个字段的所有功能,只返回单个字段,而不是整个数据集。
我的json文件格式如下:
{"type":"FeatureCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}},"features":[{"type":"Feature","properties":{"NAME":"Kingston upon Thames","GSS_CODE":"E09000021","HECTARES":3726.117,"NONLD_AREA":0,"ONS_INNER":"F","SUB_2009":null,"SUB_2006":null,"Area_name":"Kingston upon Thames","Inner_Outer_London":"Outer London","GLA_Population_Estimate_2015":170900,"GLA_Household_Estimate_2015":66870.... ,
{"type":"Feature","properties":{"NAME":"Croydon","GSS_CODE":"E09000008","HECTARES":8649.441,"NONLD_AREA":0,"ONS_INNER":"F","SUB_2009":null,"SUB_2006":null,"Area_name":"Croydon","Inner_Outer_London":"Outer London","GLA_Population_Estimate_2015":380700,"GLA_Household_Estimate_2015":152750,"Inland_Area_Hectares":8650.4,"Population_density_per_hectare_2015":44,"Average_Age_2015":36.8,"Proportion_of_population_aged_0-15_2015":22.1...
编辑:json到json lint(太大了,甚至不能复制粘贴5%)
{
"type": "FeatureCollection",
"crs": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
}
},
"features": [{
"type": "Feature",
"properties": {
"NAME": "Kingston upon Thames",
"GSS_CODE": "E09000021",
"HECTARES": 3726.117,
"NONLD_AREA": 0,
"ONS_INNER": "F",
"SUB_2009": null,
"SUB_2006": null,
"Area_name": "Kingston upon Thames",
"Inner_Outer_London": "Outer London",
"GLA_Population_Estimate_2015": 170900,
"GLA_Household_Estimate_2015": 66870,
"Inland_Area_Hectares": 3726.1,
"Population_density_per_hectare_2015": 45.9,
"Average_Age_2015": 36.9,
"Proportion_of_population_aged_0-15_2015": 19,
"Proportion_of_population_of_working-age_2015": 68.1,
"Proportion_of_population_aged_65_and_over_2015": 12.9,
"Net_internal_migration_2014": -188,
"Net_international_migration_2014": 2136,
"Net_natural_change_2014": 1178,
"PC_of_resident_population_born_abroad_2014": 29.2,
"Largest_migrant_population_by_country_of_birth_2011": "Sri Lanka",
"PC_of_largest_migrant_population_2011": 2.2,
"Second_largest_migrant_population_by_country_of_birth_2011": "India",
"PC_of_second_largest_migrant_population_2011": 1.8,
"Third_largest_migrant_population_by_country_of_birth_2011": "Korea (South)",
"PC_of_third_largest_migrant_population_2011": 1,
"PC_of_population_from_BAME_groups_2013": 27,
"PC_people_aged_3_whose_main_language_is_not_English_2011_Census": 16.4,
"Overseas_nationals_entering_the_UK_NINo_2014_15": 3157,
"New_migrant_NINo_rates_2014_15": 27.6,
"Largest_migrant_population_arrived_during_2014_15": "Bulgaria",
"Second_largest_migrant_population_arrived_during_2014_15": "Poland",
"Third_largest_migrant_population_arrived_during_2014_15": "Romania",
"Employment_rate_PC_2014": 75,
"Male_employment_rate_2014": 81.6,
"Female_employment_rate_2014": 68.5,
"Unemployment_rate_2014": 5.3,
"Youth_Unemployment_claimant_rate_18-24_Dec-14": 3,
"Proportion_of_16-18_year_olds_who_are_NEET_PC_2014": 3.9,
"Proportion_of_the_working-age_population_who_claim_out-of-work_benefits_PC_May-2014": 7,
"PC_working-age_with_a_disability_2014": 13.8,
"Proportion_of_working_age_people_with_no_qualifications_PC_2014": 3,
"Proportion_of_working_age_with_degree_or_equivalent_and_above_PC_2014": 57.8,
"Gross_Annual_Pay_2014": 36700,
"Gross_Annual_Pay_-_Male_2014": 39359,
"Gross_Annual_Pay_-_Female_2014": 30144,
"Modelled_Household_median_income_estimates_2012_13": 56920,
"PC_adults_that_volunteered_in_past_12_months_2010_11_to_2012_13": 42.7,
"Number_of_jobs_by_workplace_2013": 82300,
"PC_of_employment_that_is_in_public_sector_2013": 17.8,
"Jobs_Density_2013": 1,
"Number_of_active_businesses_2013": 8130,
"Two-year_business_survival_rates_started_in_2011": 79,
"Crime_rates_per_thousand_population_2014_15": 58.5,
"Fires_per_thousand_population_2014": 1.8,
"Ambulance_incidents_per_hundred_population_2014": 11.1,
"Median_House_Price_2014": 385000,
"Average_Band_D_Council_Tax_charge_2015_16": 1674.7,
"New_Homes_net_2013_14": 260,
"Homes_Owned_outright_2014_PC": 27.7,
"Being_bought_with_mortgage_or_loan_2014_PC": 39,
"Rented_from_Local_Authority_or_Housing_Association_2014_PC": 10.7,
"Rented_from_Private_landlord_2014_PC": 22.4,
"PC_of_area_that_is_Greenspace_2005": 36.4,
"Total_carbon_emissions_2013": 752.4,
"Household_Waste_Recycling_Rate_2013_14": 46.3,
"Number_of_cars_2011_Census": 70421,
"Number_of_cars_per_household_2011_Census": 1.1,
"PC_of_adults_who_cycle_at_least_once_per_month_2013_14": 21.1,
"Average_Public_Transport_Accessibility_score_2014": 2.9,
"Achievement_of_5_or_more_A*-_C_grades_at_GCSE_or_equivalent_including_English_and_Maths_2013_14": 68.6,
"Rates_of_Children_Looked_After_2014": 33,
"PC_of_pupils_whose_first_language_is_not_English_2014": 31.2,
"PC_children_living_in_out-of-work_households_2014": 8.9,
"Male_life_expectancy_2011-13": 81.3,
"Female_life_expectancy_2011-13": 84.5,
"Teenage_conception_rate_2013": 15.8,
"Life_satisfaction_score_2011-14_out_of_10": 7.3,
"Worthwhileness_score_2011-14_out_of_10": 7.7,
"Happiness_score_2011-14_out_of_10": 7.4,
"Anxiety_score_2011-14_out_of_10": 3.3,
"Childhood_Obesity_Prevalance_PC_2013_14": 15.4,
"People_aged_17_with_diabetes_PC": 4.9,
"Mortality_rate_from_causes_considered_preventable": 147.8,
"Political_control_in_council": "Cons",
"Proportion_of_seats_won_by_Conservatives_in_2014_election": 58.3,
"Proportion_of_seats_won_by_Labour_in_2014_election": 4.2,
"Proportion_of_seats_won_by_Lib_Dems_in_2014_election": 37.5,
"Turnout_at_2014_local_elections": 43.1
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[-0.330679021773025, 51.32901101084708],
[-0.330594407566612, 51.329088040122315],
[-0.330506076681679, 51.329148829750466],
[-0.33040917032063, 51.32920859781458],
[-0.330292080679783, 51.329270775839156],
[-0.329913420803488, 51.32946051567418],
[-0.329633553448498, 51.3296570587963],
[-0.329428743663152, 51.32984208225338],
[-0.329320874515433, 51.32996643949609],
[-0.329214439452638, 51.330090817097144],
[-0.329116282383711, 51.330263872520085],
[-0.329112914578128, 51.330396015110445],
[-0.329171126538274, 51.33072957024903],
[-0.329191261142089, 51.330965462528575],
[-0.329302869370564, 51.33152819023752],
[-0.329362730358861, 51.33161896966427],
[-0.329554511157394, 51.33187169808366],
[-0.32957894743785, 51.332186786094184],
[-0.329594169463172, 51.33228142503257],
[-0.329689958909293, 51.33248961989663],
[-0.329719262840317, 51.332670788169274],
[-0.329718670292571, 51.3327661008151],
[-0.329713610148521, 51.33286584602793],
[-0.329643333783058, 51.33349612124335],
[-0.329628931512944, 51.33385292028404],
[-0.32955045530859, 51.33415574945231],
[-0.329484343656736, 51.334355340533264],
[-0.329546392185782, 51.33446503536734],
[-0.32943190788577, 51.334850082388876],
[-0.329410693783327, 51.33511775790784],
[-0.329359189787204, 51.33531036319948],
[-0.329208182584011, 51.33563373967703],
[-0.329197301934782, 51.335933036465214],
[-0.3292123737182, 51.33630824086913],
[-0.329192093632385, 51.33670812012244],
[-0.329041495932886, 51.33757285371855],
[-0.328900403109473, 51.33817603945666],
[-0.328869185702877, 51.33867917682473],
[-0.328882267763104, 51.33903007285105],
[-0.328865474006543, 51.33941291579552],
[-0.328870743501784, 51.339583849376474],
[-0.328876209135269, 51.33974939022238],
[-0.328959278855396, 51.34011027719941],
[-0.32897922859697, 51.34023286043202],
[-0.328909131031345, 51.34077860720778],
[-0.32878050967231, 51.34107802245298],
[-0.328542139079097, 51.34174996140999],
[-0.328525372819542, 51.34177669979828],
[-0.328346097965183, 51.34204751484793],
[-0.328201229588486, 51.34231971993927],
[-0.328010139783513, 51.3429545638654],
[-0.327944151115631, 51.343347495330974],
[-0.327906765100805, 51.34374353279829],
[-0.327796114780899, 51.34390381902136],
[-0.327480771031571, 51.34400722741141],
[-0.328177350406429, 51.34404145110161],
[-0.328483504737766, 51.344545805494214],
[-0.328666777138526, 51.344915316212365],
[-0.32889842247652, 51.34529720700365],
[-0.329205727742453, 51.345888803363664],
[-0.329345801048439, 51.34614349149164],
[-0.329970752009771, 51.34728006692206],
[-0.330327238877941, 51.34790203652441],
[-0.330533821707245, 51.3484211522831],
[-0.330367226671742, 51.348579744260604],
[-0.330215568888878, 51.34876192950989],
[-0.33010259433868, 51.34898603165988],
[-0.329936935927235, 51.349237259467515],
[-0.329751960800545, 51.34954576382794],
[-0.329563227290772, 51.34991806127805],
[-0.329472923004122, 51.350071445078235],
[-0.329311170759688, 51.35033351873695],
[-0.329035951591489, 51.350714473637105],
[-0.328765226477058, 51.351129663623325],
[-0.328353064876424, 51.351721786146854],
[-0.328046476146282, 51.35213556344137],
[-0.327946973892058, 51.352186299935575],
[-0.327759713433126, 51.35228074629348],
[-0.327275573431615, 51.352522028103955],
[-0.326841759688993, 51.352800896109116],
[-0.326479944940916, 51.353034929194735],
[-0.32576608192508, 51.35335295635771],
[-0.324837670800118, 51.353725463631605],
[-0.324453895670668, 51.35389173249815],
[-0.324158745463219, 51.35410872689187],
[-0.323752687942134, 51.354413159704905],
[-0.323535036520884, 51.35467082857294],
[-0.323184811812359, 51.355176591871896],
[-0.32286192079005, 51.35552357765017],
[-0.322576060678597, 51.355839618929],
[-0.322259713883874, 51.35620378257071],
[-0.321952974065641, 51.35661934039564],
[-0.321529222971824, 51.35721037383058],
[-0.321217561495061, 51.35768161289952],
[-0.320948159097397, 51.358096803885],
[-0.32074485191113, 51.35839334104852],
[-0.320259404554301, 51.35909948913235],
[-0.320079309555563, 51.3594287310578],
[-0.320178298703104, 51.35954975110903],
[-0.320165137159728, 51.35959542427937],
[-0.319956965481558, 51.359632006261116],
[-0.319792373194367, 51.35992999621074],
[-0.319546591138533, 51.360484007640004],
[-0.319408576659198, 51.360919064677674],
[-0.319187471491333, 51.36162270524168],
[-0.319060204553952, 51.362313303737686],
[-0.318285367823378, 51.36350628288284],
[-0.318304692373129, 51.36368461225171],
[-0.318410288479828, 51.364684298029104],
[-0.318436574395861, 51.36533933091015],
[-0.318446928565835, 51.36540962119001],
[-0.318522194031934, 51.365864823752055],
[-0.318523331127983, 51.366186772301226],
[-0.318419501486083, 51.366982019317454],
[-0.318293959925026, 51.36789925275619],
[-0.318118776705997, 51.36891648952965],
[-0.318016869219867, 51.36958047277866],
[-0.31792307432635, 51.3697877525771],
[-0.317915189904803, 51.369846090732615],
[-0.317905671937818, 51.36990980094361],
[-0.318029423835983, 51.370296457234964],
[-0.317949485943705, 51.37063522667972],
[-0.317747858873623, 51.371236628787635],
[-0.317505451116108, 51.371970534099816],
[-0.317485004351317, 51.37201880004826],
[-0.317397736511194, 51.37220459108471],
[-0.317284276827518, 51.37243856545665],
[-0.31710915300419, 51.37270852331906],
[-0.316949159320968, 51.37291844843032],
[-0.31669434018152, 51.37316747730857],
[-0.316426180103382, 51.373388437150716],
[-0.31622441906802, 51.37356179105688],
[-0.315991741423486, 51.373755383037754],
[-0.31566786597181, 51.37396744709197],
[-0.315222750497486, 51.374233520531305],
[-0.31478304313528, 51.37443042773603],
[-0.314341466820288, 51.374638996680865],
[-0.313886319633562, 51.374669316927424],
[-0.313377130221505, 51.374684469452525],
[-0.31296052429465, 51.374721635667065],
[-0.312674896375059, 51.37475259344767],
[-0.312510458790253, 51.374770008772465],
[-0.312155172284965, 51.37481974553786],
[-0.311542017783552, 51.37492691452625],
[-0.31108965287778, 51.374998629591076],
[-0.310483753449209, 51.375142766954085],
[-0.309642711208725, 51.375312285083936],
[-0.309096994839523, 51.3753826456651],
[-0.308695083240137, 51.37544968412024],
[-0.308457219737233, 51.37586080533736],
[-0.308342125073947, 51.376059676775654],
[-0.307993631387426, 51.376665236570894],
[-0.307964589950761, 51.37706318563219],
[-0.307842121582618, 51.37753981880234],
[-0.307892155265686, 51.378365154948014],
[-0.307388502353935, 51.3783848578608],
[-0.307520636068388, 51.379009947771415],
[-0.308301986382553, 51.38003288908768],
[-0.308325982763562, 51.38008359360354],
[-0.308517491830129, 51.38050181237386],
[-0.309276738904714, 51.3804489235838],
[-0.309318630671963, 51.38110598120351],
[-0.309245493241462, 51.3811408959084],
[-0.309282222270164, 51.38131408205096],
[-0.309293558960914, 51.38135740967078],
[-0.309317283472768, 51.38149353886625],
[-0.309300461368501, 51.381638075513614],
[-0.309302186977275, 51.38170824197235],
[-0.309330928191318, 51.38186422705928],
[-0.309498364267572, 51.38184416158862],
[-0.309558079241459, 51.38244662180848],
[-0.309654600932123, 51.382518155823895],
[-0.309751942685852, 51.38264545512327],
[-0.309842559115887, 51.38283830261783],
[-0.309886786708619, 51.38284703382125],
[-0.309911349075752, 51.382882458877866],
[-0.310347176087456, 51.38365220797289],
[-0.310288338333552, 51.38380603058168],
[-0.310307294453304, 51.38395468024451],
[-0.31041283493994, 51.38421068996167],
[-0.310442912142391, 51.38425248916564],
[-0.310540822314576, 51.38436450868583],
[-0.310654513111652, 51.38451632264458],
[-0.310566458115827, 51.38460497812067],
[-0.310580338529139, 51.38465733476053],
[-0.31063098206852, 51.3847650756968],
[-0.310665004889603, 51.38481682347486],
[-0.310729833733766, 51.38489059736828],
[-0.310950016955934, 51.38503855072464],
[-0.311127228786578, 51.38514361955623],
[-0.311787662820079, 51.385786208624666],
[-0.310868910629078, 51.38618752238585],
[-0.311409329096351, 51.386733062833684],
[-0.311458857237744, 51.38679312704089],
[-0.311499998462655, 51.386846775623816],
[-0.311363961797792, 51.386911359771595],
[-0.311693817532641, 51.38712563803517],
[-0.311822993635975, 51.38720843162237],
[-0.3117687866668, 51.3872364266419],
[-0.311735086833573, 51.387253926103],
[-0.31184550451329, 51.38737781488004],
[-0.31174002919236, 51.387432048754796],
[-0.312872428617744, 51.388490588702766],
[-0.313158544399437, 51.38880045260526],
[-0.313188957535943, 51.38883326338753],
[-0.313348146628585, 51.3887645141297],
[-0.315981046740714, 51.38763335801295],
[-0.316518343718128, 51.388266056660285],
[-0.316599042794471, 51.38845605832363],
[-0.316617277106647, 51.388585812140974],
[-0.316816040880735, 51.388574279405724],
[-0.316811782773372, 51.38861198670033],
[-0.316809818612619, 51.38862634647098],
[-0.316805824328563, 51.38865686356263],
[-0.316800426521383, 51.38868646124439],
[-0.316792155711511, 51.38871601765691],
[-0.31677817187624, 51.38874459275521],
[-0.316759878524943, 51.38877310594719],
[-0.316716538003206, 51.388818345067065],
[-0.316663273809364, 51.3888598446173],
[-0.316605798959337, 51.38889858590655],
[-0.31654548398803, 51.38893638711643],
[-0.316489643363005, 51.38896975633323],
[-0.316425150631468, 51.389003900464004],
[-0.31635785076633, 51.38903620572856],
[-0.315848095181505, 51.38925818893088],
[-0.315457631909052, 51.38948008640397],
[-0.314980758945598, 51.38974570252308],
[-0.314134077472051, 51.39021821967621],
[-0.314273949435976, 51.39036231326585],
[-0.314682226633619, 51.3907512659625],
[-0.314819872857466, 51.39091690883333],
[-0.314926939104345, 51.39105423508098],
假设用户想要为所有功能返回HECTARES以及附带的名称,我需要使用哪些代码?
示例:用户输入HECTARES和输出返回类似于:泰晤士河畔金斯顿:3726.117,克罗伊登:8649.441等。
示例2:用户输入GSS_CODE并输出返回类似于:泰晤士河畔金斯顿:" E09000021",克罗伊登:" E09000008"等
到目前为止我的代码看起来像这样:
app.get("/api/boroughs_field", function(req, res){
// read input parameter from request
var field = req.query['field'];
// validate input, check if the parameter is valid or not
if (field === undefined)
{
// return error as a JSON string
var str = JSON.stringify( {"error":"Parameter 'field' is not defined."} );
res.end( str );
}
var fldObj = null;
// make a loop for fields???
if (fldObj == null)
{
// field not found, return an error as a JSON string
var str = JSON.stringify( {"error":"field '"+name+"' doesn't exist. Please check the spelling."} );
res.end( str );
}
// If the program gets here, the borough has been found.
var respJson = {};
respJson["results"] = [ fldObj ];
res.end( JSON.stringify( respJson ) );
});
}
所以是的,我真的不知道如何编写循环来获得所需的结果
答案 0 :(得分:1)
好的,我想你想要下面的东西。我遗漏了很多周围的细节,它们有多种细微差别,但它是你问题的一般答案。
var i, fLength, fieldValue, nameValue;
// HECTARES, GSS_CODE, etc
var requestedFieldName = ???;
// Not quite understanding your return object so you'll have to figure this out
var features = something.features;
// an array of what you were looking for
var res = [];
// Standard loop, instead of checking the length every loop though
// we set it as a constant to start with and check that constant.
for (i=0, fLength = features.length; i<fLength; i++) {
// Javascript objects are a hashmap by their nature,
// normally you can use dot notation myVar.myVal,
// but that only works when myVal is a constant string.
// If it is a variable, as in this case you can use [] instead.
fieldValue = features[i][requestedFieldName];
nameValue = features[i]["NAME"];
res.push({"field":fieldValue", "name":nameValue});
}
答案 1 :(得分:1)
您可以遍历要素列表并使用.hasOwnProperty('propName')
搜索对象的属性:
var feature;
var features = [];
for(var i = 0, total = jsonObj.features.length; i < total; i++) {
feature = jsonObj.features[i];
if (feature.hasOwnProperty(field)) {
features.push({ name: feature.name, value: feature[field] });
}
}
我建议您查看lodash以获取更多选项和效果。