求教C#解析json字符串

lunnu 2013-08-18 10:26:46
{
"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,没看明白,求大神
...全文
887 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小托尼 2013-08-18
  • 打赏
  • 举报
回复
引用 6 楼 zhanlubaojian 的回复:
[quote=引用 4 楼 iamwangshao 的回复:] 如果只要将location中lat和lng的值提取出来,可以不反序列化的,用正则表达式: "^\"location\"(.*?)\"lat\" : (.*?),\"lng\" : (.*?)},$"
刚试了,不对啊[/quote] 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);
lunnu 2013-08-18
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
[quote=引用 5 楼 zhanlubaojian 的回复:] 用google的api将地址转换成经纬度,得到的就有那个时间,不知道怎么回事
谁知道你怎样转换的?它直接给你输出这个string?[/quote] 刚才又试了一下,时间消失了。返回的就是那个字符串,用文本查看器就是这样
  • 打赏
  • 举报
回复
引用 5 楼 zhanlubaojian 的回复:
用google的api将地址转换成经纬度,得到的就有那个时间,不知道怎么回事
谁知道你怎样转换的?它直接给你输出这个string?
  • 打赏
  • 举报
回复
引用 2 楼 zhanlubaojian 的回复:
[quote=引用 1 楼 guwei4037 的回复:] refer : http://blog.csdn.net/chinacsharper/article/details/9246627
有没有不用编写类的方法[/quote] 这有什么困难的吗? 如果你只要两个属性,那么你就可以编写一个只有两个属性的class,然后写一行代码将json反序列化为这个对象的实例,然后就可以从对象中读取属性了。这显然并不比读取JObject的属性来并不复杂,甚至更简单。
lunnu 2013-08-18
  • 打赏
  • 举报
回复
引用 4 楼 iamwangshao 的回复:
如果只要将location中lat和lng的值提取出来,可以不反序列化的,用正则表达式: "^\"location\"(.*?)\"lat\" : (.*?),\"lng\" : (.*?)},$"
刚试了,不对啊
lunnu 2013-08-18
  • 打赏
  • 举报
回复
引用 3 楼 guwei4037 的回复:
我那篇博客最后附了一个通用的方法,可以用这个读取。
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 },
用google的api将地址转换成经纬度,得到的就有那个时间,不知道怎么回事
小托尼 2013-08-18
  • 打赏
  • 举报
回复
如果只要将location中lat和lng的值提取出来,可以不反序列化的,用正则表达式: "^\"location\"(.*?)\"lat\" : (.*?),\"lng\" : (.*?)},$"
全栈极简 2013-08-18
  • 打赏
  • 举报
回复
我那篇博客最后附了一个通用的方法,可以用这个读取。
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 },
lunnu 2013-08-18
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
refer : http://blog.csdn.net/chinacsharper/article/details/9246627
有没有不用编写类的方法

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧