C#中的Google地理编码Json解析问题

编程入门 行业动态 更新时间:2024-10-27 16:33:05
本文介绍了C#中的Google地理编码Json解析问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我的代码工作正常,但我似乎无法到达树的更深部分.我正在尝试拉经度和纬度.下面的代码将状态"拉为OK"没问题(在响应的最后).几何"->位置"->纬度"和lng"的语法是什么?

I have my code working fine, but I can't seem to be able to get to the deeper parts of the tree. I'm trying to pull the longitude and the latitude. The code below pulls 'status' no problem as 'OK" (at the very end of the response). What is the syntax for 'geometry' -> 'location' -> 'lat' and 'lng'?

这是我的代码:

string RawAddress = "163 Leektown Road, New Gretna, NJ 08004"; string Address = RawAddress.Replace(" ", "+"); string AddressURL = "maps.google/maps/api/geocode/json?address=" + Address; var result = new System.Net.WebClient().DownloadString(AddressURL); dynamic data = JObject.Parse(result); Lat.Text = data.status;

这是 API 生成的内容:

This is what the API generates:

{ "results" : [ { "address_components" : [ { "long_name" : "Mountain View", "short_name" : "Mountain View", "types" : [ "locality", "political" ] }, { "long_name" : "Santa Clara County", "short_name" : "Santa Clara County", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "California", "short_name" : "CA", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] } ], "formatted_address" : "Mountain View, CA, USA", "geometry" : { "bounds" : { "northeast" : { "lat" : 37.4508789, "lng" : -122.0446721 }, "southwest" : { "lat" : 37.3567599, "lng" : -122.1178619 } }, "location" : { "lat" : 37.3860517, "lng" : -122.0838511 }, "location_type" : "APPROXIMATE", "viewport" : { "northeast" : { "lat" : 37.4508789, "lng" : -122.0446721 }, "southwest" : { "lat" : 37.3567599, "lng" : -122.1178619 } } }, "partial_match" : true, "types" : [ "locality", "political" ] } ], "status" : "OK" }

推荐答案

以下是获得所需内容的步骤:

Here are the steps to get what you want:

  • 在 json2csharp/ 中发布您的 JSON.获取生成的类并合并重复项,您会得到:

  • Post your JSON in json2csharp/. Take the resulting classes and merge duplicates, and you get: public class AddressComponent { public string long_name { get; set; } public string short_name { get; set; } public List<string> types { get; set; } } public class Bounds { public Location northeast { get; set; } public Location southwest { get; set; } } public class Location { public double lat { get; set; } public double lng { get; set; } } public class Geometry { public Bounds bounds { get; set; } public Location location { get; set; } public string location_type { get; set; } public Bounds viewport { get; set; } } public class Result { public List<AddressComponent> address_components { get; set; } public string formatted_address { get; set; } public Geometry geometry { get; set; } public bool partial_match { get; set; } public List<string> types { get; set; } } public class RootObject { public List<Result> results { get; set; } public string status { get; set; } }

    (您也可以使用 将 JSON 粘贴为类 或 jsonutils/ 生成初始类型定义.)

    (You could also use Paste JSON as Classes or jsonutils/ to generate your initial type definitions.)

    使用 Json.NET 反序列化您的 JSON,如下所示:

    Deserialize your JSON with Json.NET like so:

    var root = JsonConvert.DeserializeObject<RootObject>(result);

  • 您的查询返回了多个结果,因此您需要像这样遍历返回的位置:

  • There are multiple results returned for your query, so you need to loop through the locations returned like so:

    foreach (var singleResult in root.results) { var location = singleResult.geometry.location; var latitude = location.lat; var longitude = location.lng; // Do whatever you want with them. }

  • 更多推荐

    C#中的Google地理编码Json解析问题

    本文发布于:2023-05-29 21:35:06,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/353349.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:地理   Google   Json

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!