{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Laiwu",
               "short_name" : "Laiwu",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Shandong",
               "short_name" : "Shandong",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "China",
               "short_name" : "CN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Laiwu, Shandong, China",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 36.5538547,
                  "lng" : 117.9753321
               },
               "southwest" : {
                  "lat" : 35.9906212,
                  "lng" : 117.3391437
               }
            },
            "location" : {10:11 2013/8/18
               "lat" : 36.213691,
               "lng" : 117.676731
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 36.2978434,
                  "lng" : 117.8118896
               },
               "southwest" : {
                  "lat" : 36.12000390000001,
                  "lng" : 117.5489044
               }
            }
         },
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}
怎样将location中lat和lng的值提取出来?网上说使用newtonsoft,没看明白,求大神

解决方案 »

  1.   

    refer : http://blog.csdn.net/chinacsharper/article/details/9246627
      

  2.   

    我那篇博客最后附了一个通用的方法,可以用这个读取。
    string jsonText = @" {'Count':1543,'Items':[{'UnitID':6119,'UnitName':'C'}]}";  
    JsonReader reader = new JsonTextReader(new StringReader(jsonText));  
    while (reader.Read())  
    {  
        Console.WriteLine(reader.TokenType + "\t\t" + reader.ValueType + "\t\t" + reader.Value);  
    }  
    另外指出你的json字符串的一个错误,红色部分是怎么回事啊?  "location" : {10:11 2013/8/18
                   "lat" : 36.213691,
                   "lng" : 117.676731
                },
      

  3.   

    如果只要将location中lat和lng的值提取出来,可以不反序列化的,用正则表达式: "^\"location\"(.*?)\"lat\" : (.*?),\"lng\" : (.*?)},$"
      

  4.   

    用google的api将地址转换成经纬度,得到的就有那个时间,不知道怎么回事
      

  5.   

    有没有不用编写类的方法这有什么困难的吗?如果你只要两个属性,那么你就可以编写一个只有两个属性的class,然后写一行代码将json反序列化为这个对象的实例,然后就可以从对象中读取属性了。这显然并不比读取JObject的属性来并不复杂,甚至更简单。
      

  6.   


    谁知道你怎样转换的?它直接给你输出这个string?
      

  7.   


    谁知道你怎样转换的?它直接给你输出这个string?
    刚才又试了一下,时间消失了。返回的就是那个字符串,用文本查看器就是这样
      

  8.   

    刚试了,不对啊string json = "{\"results\":[{\"address_components\":[{\"long_name\":\"Laiwu\",\"short_name\":\"Laiwu\",\"types\":[\"locality\",\"political\"]},{\"long_name\":\"Shandong\",\"short_name\":\"Shandong\",\"types\":[\"administrative_area_level_1\",\"political\"]},{\"long_name\":\"China\",\"short_name\":\"CN\",\"types\":[\"country\",\"political\"]}],\"formatted_address\":\"Laiwu,Shandong,China\",\"geometry\":{\"bounds\":{\"northeast\":{\"lat\":36.5538547,\"lng\":117.9753321},\"southwest\":{\"lat\":35.9906212,\"lng\":117.3391437}},\"location\":{10:112013/8/18\"lat\":36.213691,\"lng\":117.676731},\"location_type\":\"APPROXIMATE\",\"viewport\":{\"northeast\":{\"lat\":36.2978434,\"lng\":117.8118896},\"southwest\":{\"lat\":36.12000390000001,\"lng\":117.5489044}}},\"types\":[\"locality\",\"political\"]}],\"status\":\"OK\"}";
    Regex r = new Regex("\"location\"(.*?)\"lat\"(.*?),\"lng\"(.*?)},");
    Console.WriteLine(r.Matches(json)[0].Value);