我正在使用与邮政编码相关的API服务,您可以在给定邮政编码的给定距离内获取所有其他邮政编码。
以下是Json
结果
{
"postcode":"******",
"lat":111111111,
"lng":11111111,
"distance":0.0
},
{
"postcode":"******",
"lat":2222222222,
"lng":2222222222222,
"distance":0.0343
}
我在API Controller
public object GetPostcodesWithin(string postcode, double distance)
{
var trimPostcode = postcode.Trim();
var url = "some url" + trimPostcode + "&miles=" + distance + "&format=json";
dwml = webClient.DownloadString(url);
dynamic jsonData = JArray.Parse(dwml);
var response = jsonData;
dynamic secondps = jsonData[1];
string newps = secondps.postcode;
JObject rss = JObject.Parse(jsonData);
var postcodes = from p in rss["{ }"]
select (string)p["postcode"];
JArray finalPostcodes = new JArray();
// List<string> finalPostcodes = new List<string>();
foreach (var item in postcodes)
{
var firstletters = item.Substring(0, 4);
finalPostcodes.Add(firstletters);
}
return finalPostcodes;
//int length = response.Count;
//for (int i = 0; i < response.Count; i++)
//{
// var item = (JObject)response[i];
// // JObject o = JObject.Parse(response);
//}
//for (int i=0; i< dwml.Length; i++)
//{
// JToken t[i] = JToken.Parse("{}");
//}
//JObject rss = JObject.Parse(json);
//var postTitles =
//from p in rss["channel"]["item"]
//select(string)p["title"];
//foreach(var item in postTitles)
// {
// Console.WriteLine(item);
// }
// return Json(newps);
}
所有注释掉的部分都是我尝试的不同之处。基本上我得到动态Json
数据,但在此行JObject rss = JObject.Parse(jsonData);
它失败了。目标是只获取JArray
中每个对象的postcode属性的前4个字母,将其保存在另一个JArray
或List
中,以便我可以使用它来查询来自其中的匹配数据MVC
Web应用程序的数据库。
答案 0 :(得分:0)
尝试以下方法:
string yourJsonData = // your json array
var jsonArray = JArray.Parse(yourJsonData);
var resultList = new List<string>();
foreach(var jsonObj in jsonArray)
{
dynamic obj = jsonObj;
string postcode = obj.postcode;
resultList.Add(postcode.Substring(0,4));
}
它将遍历所有返回的项目,获取每个邮政编码中的前4个字符并将其存储在resultList
中。