在C#中通过使用Newtonsoft.Json库来解析百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据

Posted rainbow70626

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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);

 

以上是关于在C#中通过使用Newtonsoft.Json库来解析百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 NewtonSoft Json 在 C# 中获取 JSON 的所有子项

C# Newtonsoft JSON:反序列化和跳过对象名称

如何使用 C# 进行条件序列化 - NewtonSoft.Json

Asp.net C# 使用Newtonsoft.Json 实现DataTable转Json格式数据

C# 程序集绑定重定向 - Newtonsoft.Json

c# 在.NET使用Newtonsoft.Json转换,读取,写入json