当前位置: 首页 > 面试题库 >

C#中的Google Geocoding Json解析问题

祝允晨
2023-03-14
问题内容

我的代码工作正常,但似乎无法深入到树的更深部分。我正在尝试拉经度和纬度。下面的代码将“状态”毫无问题地拉为“确定”(在响应的最后),“几何”->“位置”->“
lat”和“ lng”的语法是什么?

这是我的代码:

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

Lat.Text = data.status;

API生成以下内容:

{
   "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"
  }

问题答案:

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

  1. 将您的JSON发布到http://json2csharp.com/中。采取结果类并合并重复项,您将得到:
        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作为类粘贴或https://jsonutils.com/来生成初始类型html" target="_blank">定义。)

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

        var root = JsonConvert.DeserializeObject<RootObject>(result);
    
  2. 您的查询返回了多个结果,因此您需要像这样循环遍历返回的位置:

        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.
    }
    


 类似资料:
  • 问题内容: 我已经完成了有关iOS中JSON的Raywenderlich教程,但是我很难将其调整为适合自己的JSON文件。这是 我的JSON : 这是 我的代码 : 日志返回。 问题答案: 你这样做是不对的。您已正确将JSON数据填充到字典(名为)中。但你有一个(被称为你的主要内部)和价值的是内部数组。 正确的代码是: 了解概念。这取决于你的内心里有什么。如果它是一个数组(在Values内部),则

  • 我已经下载了json和我的对话档案。我坚持使用奇怪的编码。 json的例子: 应该是这样的: 我正试图这样反序列化它: 不幸的是,输出如下: 有人知道Facebook如何编码json吗?我尝试了几种方法,但没有结果。 谢谢你的帮助。

  • 本文向大家介绍C#中的TemplateMethod模式问题分析,包括了C#中的TemplateMethod模式问题分析的使用技巧和注意事项,需要的朋友参考一下 一个真实的故事 大学的时候就开过一门课程,讲设计模式,可是大学生没什么编程实践经验,在大学里面听设计模式的感觉,就像听天书。听着都有道理,可是完全领会不到其中的奥妙,大抵原因就在于没有走过弯路,没有吃过设计不当的亏。古人云,“操千曲而后晓声

  • 本文向大家介绍mybatis中的缓存问题解析,包括了mybatis中的缓存问题解析的使用技巧和注意事项,需要的朋友参考一下 关于mybatis基础我们前面几篇博客已经介绍了很多了,今天我们来说一个简单的问题,那就是mybatis中的缓存问题。mybatis本身对缓存提供了支持,但是如果我们没有进行任何配置,那么默认情况下系统只开启了一级缓存,一级缓存就是同一个SqlSession执行的相同查询是会

  • 我正在通过自定义语法处理输入文件,提取标记,并在中返回它们。在ANTLR 3中,我能够通过调用解析器上的方法来解析文件,并获得类似于。 这在ANTLR 4中似乎不起作用。我参考了这本书,似乎我必须调用开始解析,但我在解析器中没有看到任何方法。 我使用ANTLRWorks 2生成我的词法分析器和解析器文件。我没有生成侦听器类。

  • 问题内容: 我正在尝试存储从以下请求中获取的JSON中的JSON … 得到的JSON从获得 的身体 是下面的,正如你可以看到有是JSON内的JSON,我怎么能存储 的是 JSON在 NSDictionary中 ,你可以看到,JSON是引号之间。 问题答案: 实际上,您拥有的是:经典JSON,其中有一个字符串“代表” JSON。 因此,由于我们可以这样做: NSData <=> NSString N