【问题标题】:Deserialize JSON string(geocode API's google) to object using JSON.NET c#使用 JSON.NET c# 将 JSON 字符串(geocode API 的 google)反序列化为对象
【发布时间】:2016-08-09 18:59:13
【问题描述】:

我正在使用地理编码 API 的 Google,我可以获取包含所有日期的 JSON 字符串,但是当我将其转换为对象时,它不起作用,它返回任何内容,我使用的是 JSON.NET,我做错了什么?

在所有 JSON 数据中,我只想获取 formatted_address。

json 请求:http://maps.googleapis.com/maps/api/geocode/json?address=av.paulista&sensor=false%22

对不起我的英语不好

我的主要形式:获取 JSON 数据(工作)

private void btnConsumir_Click(object sender, EventArgs e)
    {
        string address = txtAddress.Text ;

        string searchCode = "http://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&sensor=false";
        var JSONdata = "";


        var httpWebRequest = (HttpWebRequest)WebRequest.Create(searchCode);
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";


        var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream());

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            JSONdata = streamReader.ReadToEnd();
        }

        lblJSON.Text = JSONdata;//its a label

这里我想获取json的formatted_address信息:

[...]
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            JSONdata = streamReader.ReadToEnd();
        }

        lblJSON.Text = JSONdata;//its a label

        AddressObject addressObject = JsonConvert.DeserializeObject<addressObject>(JSONdata);
        string result = addressObject.formatted_address;

        lblJSON.Text = result;

这是我的类对象:

class AddressObject
    {
        public string formatted_address { get; set; }




    }

非常感谢!

【问题讨论】:

    标签: c# json google-maps


    【解决方案1】:

    从api返回的结果比formatted_address多很多。您需要反序列化整个图表,然后取出您想要的内容。

    使用下面的类结构,您可以这样做:

    Rootobject mapdata = JsonConvert.DeserializeObject<Rootobject>(JSONdata);
    

    ...

    public class Rootobject
    {
        public Result[] results { get; set; }
        public string status { get; set; }
    }
    
    public class Result
    {
        public Address_Components[] address_components { get; set; }
        public string formatted_address { get; set; }
        public Geometry geometry { get; set; }
        public string place_id { get; set; }
        public string[] types { get; set; }
    }
    
    public class Geometry
    {
        public Location location { get; set; }
        public string location_type { get; set; }
        public Viewport viewport { get; set; }
    }
    
    public class Location
    {
        public float lat { get; set; }
        public float lng { get; set; }
    }
    
    public class Viewport
    {
        public Northeast northeast { get; set; }
        public Southwest southwest { get; set; }
    }
    
    public class Northeast
    {
        public float lat { get; set; }
        public float lng { get; set; }
    }
    
    public class Southwest
    {
        public float lat { get; set; }
        public float lng { get; set; }
    }
    
    public class Address_Components
    {
        public string long_name { get; set; }
        public string short_name { get; set; }
        public string[] types { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 2016-08-07
      相关资源
      最近更新 更多