【问题标题】:Pick out value from Json从 Json 中提取价值
【发布时间】:2014-09-13 13:57:38
【问题描述】:

我有使用 GoogleMapsApi 的代码:

 public void GoogleGeoCode(string address)
        {
            address = "Stockholm";
            string url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address=";

            dynamic googleResults = new Uri(url + address).GetDynamicJsonObject();

            //Code that lets me pick out values from googleresults

        }

googleresults 包含值(经度/纬度),但我怎样才能挑选出这些值并将其用于其他用途?我在类似的情况下使用了这种方法,但在这种情况下它不是有效的代码:

 JObject o = JObject.Parse(googleresult);

 string name = (string)o.SelectToken("longitude");

编辑:

这个好像是挑放的经纬度:

public void GoogleGeoCode(string address)
        {
            address = "Stockholm";
            string url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address=";

            dynamic googleResults = new Uri(url + address).GetDynamicJsonObject();


            foreach (var result in googleResults.results)
            {

                double lng = result.geometry.location.lng;

                double  lat  = result.geometry.location.lat;
            }

            //Do something else...

        }

【问题讨论】:

  • 您是否考虑过反序列化为一个对象,然后使用点符号通过该对象访问它?
  • @mason,您介意详细说明如何做到这一点吗?
  • 好吧,首先您生成一个可以反序列化的 C# 类。 Json2CSharp 对此有好处。然后,您只需将其反序列化为该对象,如果您使用 Json.NET,您将使用 JsonConvert.DeserializeObject<T> 方法。
  • 谢谢梅森,我认为这对将来有用。

标签: c# json


【解决方案1】:

您的 googleResults 不是字符串。它是一个动态的 jason 对象。试试看这个。

来自这里的代码:Looking for a REST with JSON client library

public static void GoogleGeoCode(string address)
{
    string url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address=";
    dynamic googleResults = new Uri(url + address).GetDynamicJsonObject();

    foreach (var result in googleResults.results)
    {
        Console.WriteLine("[" + result.geometry.location.lat + "," + 
                            result.geometry.location.lng + "] " + 
                            result.formatted_address);
    }
}

【讨论】:

  • 感谢您的回答,但我写 o. 时没有显示“属性”,谢谢。
  • “戴上手表”是什么意思?
  • 不是一个带有 c# 的 MVC 项目。
  • 请查看修改后的答案。对不起,我带你走错了路。祝你好运!
  • 没问题,感谢您抽出宝贵的时间。但是,我的错误发生在这一行: JObject o = JObject.Parse(googleresults); 'Newtonsoft.Json.Linq.JObject.Parse(string)' 的最佳重载方法匹配有一些无效参数
猜你喜欢
  • 2011-11-12
  • 2013-04-11
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多