gpt4 book ai didi

c# - 如何将 JSON 输出反序列化为 C# 结构(基于调用 Google Maps API 的返回)

转载 作者:太空狗 更新时间:2023-10-30 01:34:08 25 4
gpt4 key购买 nike

第一次作为新手在这里发帖,如果我没有以正确的方式发布这个问题,我深表歉意

我有一个结构来保存 .NET MVC5 项目中的地理坐标

   public struct GeoCoordinate
{
private readonly double latitude;
private readonly double longitude;

public double Latitude { get { return latitude; } }
public double Longitude { get { return longitude; } }

public GeoCoordinate(double latitude, double longitude)
{
this.latitude = latitude;
this.longitude = longitude;
}

public override string ToString()
{
return string.Format("{0},{1}", Latitude, Longitude);
}
}

我试图在 Post Create 方法上调用一个方法,以使用 Google Maps API 提供的位置坐标填充坐标值 - 它提供 JSON 格式的数据流。

public GeoCoordinate GEOCodeAddress(String Address)
{
var address = String.Format("https://maps.googleapis.com/maps/api/geocode/json?address={0}&sensor=false", Address.Replace(" ", "+"));
var result = new System.Net.WebClient().DownloadString(address);
JavaScriptSerializer jss = new JavaScriptSerializer();

return jss.Deserialize<dynamic>(result);


}

我可以“看到”结果包含 JSON,其中(在许多其他属性中)我要返回的位置坐标,我只是在“解析”这些位置的语法上遇到问题属性并将它们返回到我的创建方法。

在 JSON 可视化工具中,坐标位于 JSON[0].geometry.location.lat 和 JSON[0].geometry.location.lng 中,我猜(?!)JSON[0].geometry. location 包含一个应该与我的结构兼容(ish)的对象。如有必要,我很乐意修改该结构以使其兼容!

在此先感谢您提供的任何帮助/见解!

最佳答案

查看该 URL 返回的 JSON,您需要反序列化为对象的类如下所示(获取此代码的最简单方法是将 JSON 复制到剪贴板,然后在 Visual Studio 中,编辑菜单,选择性粘贴并选择 Paste as JSON Classes):

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 bool partial_match { get; set; }
}

public class Geometry
{
public Bounds bounds { get; set; }
public Location location { get; set; }
public string location_type { get; set; }
public Viewport viewport { get; set; }
}

public class Bounds
{
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 Location
{
public float lat { get; set; }
public float lng { get; set; }
}

public class Viewport
{
public Northeast1 northeast { get; set; }
public Southwest1 southwest { get; set; }
}

public class Northeast1
{
public float lat { get; set; }
public float lng { get; set; }
}

public class Southwest1
{
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; }
}

要将该数据放入其中一个对象中,只需执行以下操作(使用 Json.Net):

RootObject googleData = JsonConvert.DeserializeObject<RootObject>(result);

关于c# - 如何将 JSON 输出反序列化为 C# 结构(基于调用 Google Maps API 的返回),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31797624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com