在C#中通过使用Newtonsoft.Json库来解析百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据
百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据,如下所示:
http://api.map.baidu.com/geocoding/v3/?address=**省**市**区**路**号院**社区&output=json&ak=您的AK密钥
返回结果实例:
{ "status":0, "result": { "location":{"lng":116.79, "lat":39.99}, "precise":1, "confidence":70, "comprehension":100, "level":"地产小区" } }
本文简要介绍如何在C#中通过使用Newtonsoft.Json库来解析Json格式的数据。
1、创建主应用程序(控制台或Winform程序均可);
2、引入Newtonsoft.Json.dll。
3、在工程中创建如下的类:
public class Location { [JsonProperty("lng")] public double Lng { get; set; } [JsonProperty("lat")] public double Lat { get; set; } } public class Result { [JsonProperty("location")] public Location Location { get; set; } [JsonProperty("precise")] public int Precise { get; set; } [JsonProperty("confidence")] public int Confidence { get; set; } [JsonProperty("comprehension")] public int Comprehension { get; set; } [JsonProperty("level")] public string Level { get; set; } } public class RecordResult { [JsonProperty("status")] public int Status { get; set; } [JsonProperty("result")] public Result Result { get; set; } }
4、构建URL服务连接,发起Http请求,获取响应数据流中的内容,调用JsonConvert.DeserializeObject()方法将字符串反序列化为对象即可,调用的cs文件中需要添加using Newtonsoft.Json;名称空间的引用:
string m_CurrentSearchUri="http://api.map.baidu.com/geocoding/v3/?address=**省**市**区**路**号院**社区&output=json&ak=您的AK密钥";
WebClient client = new WebClient(); client.Encoding = Encoding.UTF8; //将返回的json数据转为JSON对象 RecordResult joResult = JsonConvert.DeserializeObject<RecordResult>(client.DownloadString(m_CurrentSearchUri));
5、当然了,上述的Http请求也可以采用HttpWebRequest和HttpWebResponse来完成。
// 送出要求 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_CurrentSearchUri); // 取得回應 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream()); //得到一个json字符串 string joResultTemp = sr.ReadToEnd().ToString(); //将返回的json数据转为JSON对象 RecordResult joResult = JsonConvert.DeserializeObject<RecordResult>(joResultTemp);