c#访问一个URL后返回一个JSON文件 C#json 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把json 反序列号为C#对象搜索一下Newtonsoft.Json 返回的json是一个json序列化后的字符串,需要引用Newtonsoft.Json.dll进行解析,得到原来对象的字段和属性。 解析成对象,可以使用Json.net(http://james.newtonking.com/json),或者.net framework自带的DataContractJsonSerializer (http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer(v=vs.100).aspx)。 这里有一个DataContractJsonSerializer的例子 http://msdn.microsoft.com/en-us/library/bb412179(v=vs.110).aspx 用Newtonsoft.Json把里面的属性和对应的值解析出来 有一个解析例子:using Newtonsoft.Json; private string GetWeather() { string getWeatherUrl = "http://www.weather.com.cn/data/cityinfo/101010100.html"; //取得今天天气预报 WebRequest webReq = WebRequest.Create(getWeatherUrl); WebResponse webResp = webReq.GetResponse(); Stream stream = webResp.GetResponseStream(); StreamReader sr = new StreamReader(stream, Encoding.UTF8); string html = sr.ReadToEnd(); sr.Close(); stream.Close(); return html; }调用 方法: string s = GetWeather(); //{ "weatherinfo": { "city": "北京", "cityid": "101010100", "temp1": "2℃", "temp2": "10℃", "weather": "多云转阴", "img1": "n1.gif", "img2": "d2.gif", "ptime": "18:00" }} JObject jo = (JObject)JsonConvert.DeserializeObject(s); string city = jo["weatherinfo"]["city"].ToString(); //北京 string temp1 = jo["weatherinfo"]["temp1"].ToString();//2℃ string temp2 = jo["weatherinfo"]["temp2"].ToString();//10℃ ........ JSON 的优点在 Web 开发方面,JSON 与 XML 相比主要有两个优点。首先,它更加简洁。JSON 对象是一系列以逗号分隔的 name:value 对,最外面有一对花括号。相反,XML 则使用重复的开始和结束标记包装数据值。因此,与相应的 JSON 相比,这样便产生了两倍的元数据开销,所以 Crockford 将 JSON 趣称为 “XML 的无脂替代品”(请参阅 参考资料)。当处理 Web 开发的 “细管道” 时,每次减少一些字节都可以带来实在的性能好处。 清单 1 显示了 JSON 和 XML 如何组织相同的信息: 清单 1. 比较 JSON 和 XML{"city":"Denver", "state":"CO", "country":"US"}<result> <city>Denver</city> <state>CO</state> <country>US</country></result> 对于 Groovy 程序员来说,JSON 对象看上去应该更熟悉:如果将花括号换成方括号的话,在 Groovy 中就是定义一个 HashMap。说起方括号,定义 JSON 对象数组的方式与定义 Groovy 对象的方式是完全一样的。一个 JSON 数组就是一个以逗号分隔的系列,外面以方括号包围,如清单 2 所示: 清单 2. 一个 JSON 对象列表[{"city":"Denver", "state":"CO", "country":"US"}, {"city":"Chicago", "state":"IL", "country":"US"}] 当解析和处理 JSON 时,就突出了 JSON 的第二个优点。将 JSON 装载到内存只需一个 eval() 调用。装载后,就可以通过名称直接访问任何字段,如清单 3 所示: 清单 3. 装载 JSON 和调用字段var json ='{"city":"Denver", state:"CO", country:"US"}'var result =eval( '(' + json + ')' )alert(result.city) Groovy 的 XmlSlurper 也允许直接访问 XML 元素。(您已经在 “Grails 服务和 Google 地图” 中使用过 XmlSlurper)。如果现代 Web 浏览器支持客户端 Groovy,我就不会对 JSON 这么感兴趣。不幸的是,Groovy 完全是一个服务器端解决方案。就客户机-服务器开发而言,JavaScript 是唯一选项。所以我选择在服务器端使用 Groovy 处理 XML,而在客户端则使用 JavaScript 处理 JSON。在这两种情况下,我都可以最轻松地得到数据。 自带的json序列化凡序列化类在System.web.script命名空间下。 求翻译一段C++ 代码 C#好多声明都不一样。。。 数据绑定 c# 新手问界面设计方面的问题,有什么方法实现此功能? 关于WinForm获得路径问题 C#打印问题 用 SqlHelper.ExecuteReader 方法得不到 存储过程的返回值 为什么打印的时候自己设定了纸的大小,打印的时候还是打印A4纸? 一个类型转换问题 速求一正则表达式...... 关于局域网里传输文件? 多接口继承与单接口继承链的区别 怎么把 List<string> 转换为 List<int> 类型?
Newtonsoft.Json
using Newtonsoft.Json;
private string GetWeather()
{
string getWeatherUrl = "http://www.weather.com.cn/data/cityinfo/101010100.html"; //取得今天天气预报
WebRequest webReq = WebRequest.Create(getWeatherUrl);
WebResponse webResp = webReq.GetResponse();
Stream stream = webResp.GetResponseStream();
StreamReader sr = new StreamReader(stream, Encoding.UTF8);
string html = sr.ReadToEnd();
sr.Close();
stream.Close();
return html;
}调用 方法:
string s = GetWeather();
//{ "weatherinfo": { "city": "北京", "cityid": "101010100", "temp1": "2℃", "temp2": "10℃", "weather": "多云转阴", "img1": "n1.gif", "img2": "d2.gif", "ptime": "18:00" }}
JObject jo = (JObject)JsonConvert.DeserializeObject(s);
string city = jo["weatherinfo"]["city"].ToString(); //北京
string temp1 = jo["weatherinfo"]["temp1"].ToString();//2℃
string temp2 = jo["weatherinfo"]["temp2"].ToString();//10℃
........
在 Web 开发方面,JSON 与 XML 相比主要有两个优点。首先,它更加简洁。JSON 对象是一系列以逗号分隔的 name:value 对,最外面有一对花括号。相反,XML 则使用重复的开始和结束标记包装数据值。因此,与相应的 JSON 相比,这样便产生了两倍的元数据开销,所以 Crockford 将 JSON 趣称为 “XML 的无脂替代品”(请参阅 参考资料)。当处理 Web 开发的 “细管道” 时,每次减少一些字节都可以带来实在的性能好处。 清单 1 显示了 JSON 和 XML 如何组织相同的信息: 清单 1. 比较 JSON 和 XML{"city":"Denver", "state":"CO", "country":"US"}
<result> <city>Denver</city> <state>CO</state> <country>US</country></result>
对于 Groovy 程序员来说,JSON 对象看上去应该更熟悉:如果将花括号换成方括号的话,在 Groovy 中就是定义一个 HashMap。说起方括号,定义 JSON 对象数组的方式与定义 Groovy 对象的方式是完全一样的。一个 JSON 数组就是一个以逗号分隔的系列,外面以方括号包围,如清单 2 所示: 清单 2. 一个 JSON 对象列表[{"city":"Denver", "state":"CO", "country":"US"}, {"city":"Chicago", "state":"IL", "country":"US"}]
当解析和处理 JSON 时,就突出了 JSON 的第二个优点。将 JSON 装载到内存只需一个 eval() 调用。装载后,就可以通过名称直接访问任何字段,如清单 3 所示: 清单 3. 装载 JSON 和调用字段var json ='{"city":"Denver", state:"CO", country:"US"}'var result =eval( '(' + json + ')' )alert(result.city)
Groovy 的 XmlSlurper 也允许直接访问 XML 元素。(您已经在 “Grails 服务和 Google 地图” 中使用过 XmlSlurper)。如果现代 Web 浏览器支持客户端 Groovy,我就不会对 JSON 这么感兴趣。不幸的是,Groovy 完全是一个服务器端解决方案。就客户机-服务器开发而言,JavaScript 是唯一选项。所以我选择在服务器端使用 Groovy 处理 XML,而在客户端则使用 JavaScript 处理 JSON。在这两种情况下,我都可以最轻松地得到数据。