/// <summary>
/// http://www.weather.com.cn/data/sk/101280601.html
/// {"weatherinfo":{"city":"深圳","cityid":"101280601","temp":"32","WD":"西南风","WS":"4级","SD":"68%","WSE":"4","time":"16:40","isRadar":"1","Radar":"JC_RADAR_AZ9755_JB"}}
/// 20140531 涂聚文 Geovin Du
/// </summary>
public class WeatherInfo
{ //public string city;
//public string cityid;
//public string temp;
//public string WD;
//public string WS;
//public string SD;
//public string WSE;
//public string time;
//public string isRadar;
//public string Radar; string _city;
string _cityid;
string _temp;
string _WD;
string _WS;
string _SD;
string _WSE;
string _time;
string _isRadar;
string _Radar;
/// <summary>
/// 城市名称
/// </summary>
public string city
{ get
{
return _city;
}
set
{
_city = value;
}
}
/// <summary>
/// 城市代码
/// </summary>
public string cityid
{
get
{
return _cityid;
}
set
{
_cityid = value;
}
//get;
//set;
}
/// <summary>
/// 温度
/// </summary>
public string temp
{
get
{
return _temp;
}
set
{
_temp = value;
} }
/// <summary>
/// 风向
/// </summary>
public string WD
{
get
{
return _WD;
}
set
{
_WD = value;
} }
/// <summary>
/// 风级
/// </summary>
public string WS
{
get
{
return _WS;
}
set
{
_WS = value;
} }
/// <summary>
/// 湿度
/// </summary>
public string SD
{
get
{
return _SD;
}
set
{
_SD = value;
} }
/// <summary>
///
/// </summary>
public string WSE
{
get
{
return _WSE;
}
set
{
_WSE = value;
} }
/// <summary>
/// 发布时间
/// </summary>
public string time
{
get
{
return _time;
}
set
{
_time = value;
}
}
/// <summary>
///
/// </summary>
public string isRadar
{
get
{
return _isRadar;
}
set
{
_isRadar = value;
} }
/// <summary>
///
/// </summary>
public string Radar
{
get
{
return _Radar;
}
set
{
_Radar = value;
} }
private Dictionary<string, object> _theRest = new Dictionary<string, object>();
public Dictionary<string, object> TheRest
{
get { return _theRest; } }
// public Dictionary<string, decimal> Rates { get; set; }
}
/// <summary>
/// http://www.weather.com.cn/data/sk/101280601.html
/// 20140531 涂聚文 Geovin Du
/// </summary>
public class WeatherInfoConverter : CustomCreationConverter<WeatherInfo>
{
public override WeatherInfo Create(Type objectType)
{
return new WeatherInfo();
} public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
WeatherInfo mappedObj = new WeatherInfo();
//get an array of the object's props so I can check if the JSON prop s/b mapped to it
PropertyInfo[] myPropertyInfo;
myPropertyInfo = objectType.GetProperties();
string objProps = string.Empty; //for (int i = 0; i < myPropertyInfo.Length; i++)
//{
// objProps = objProps +" "+ myPropertyInfo[i].ToString();
//} foreach (PropertyInfo pi in objectType.GetProperties())
{
object value1 = pi.GetValue(mappedObj, null);//用pi.GetValue获得值
objProps = objProps + " " + pi.Name;//获得属性的名字,后面就可以根据名字判断来进行些自己想要的操作
//获得属性的类型,进行判断然后进行以后的操作,例如判断获得的属性是整数
//if(value1.GetType() == typeof(int))
//{
// //进行你想要的操作
//}
}
//objProps = myPropertyInfo[0].Name.ToLower().ToString(); //objectType.GetProperties().Select(p => p.Name.ToLower()).ToArray(); //loop through my JSON string
while (reader.Read())
{
//if I'm at a property...
if (reader.TokenType == JsonToken.PropertyName)
{
//convert the property to lower case
string readerValue = reader.Value.ToString().ToLower();
if (reader.Read()) //read in the prop value
{
//is this a mapped prop?
if (objProps.Contains(readerValue))
{
//get the property info and set the Mapped object's property value
PropertyInfo pi = mappedObj.GetType().GetProperty(readerValue, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
object convertedValue = Convert.ChangeType(reader.Value, pi.PropertyType);
pi.SetValue(mappedObj, convertedValue, null);
}
else
{
//otherwise, stuff it into the Dictionary
mappedObj.TheRest.Add(readerValue, reader.Value);
}
}
}
}
return mappedObj;
}
}
  /// <summary>
/// http://www.weather.com.cn/data/sk/101280601.html
/// http://www.weather.com.cn/data/cityinfo/101280601.html
/// http://geoip.weather.com.cn/g/
/// http://m.weather.com.cn/data/101190101.html
/// 20140531 涂聚文 Geovin Du
/// {"weatherinfo":{"city":"深圳","cityid":"101280601","temp":"32","WD":"西南风","WS":"4级","SD":"68%","WSE":"4","time":"16:40","isRadar":"1","Radar":"JC_RADAR_AZ9755_JB"}}
/// </summary>
public partial class WebForm1 : System.Web.UI.Page
{
string json_data = string.Empty;
string url = string.Empty; //WeatherInfo we = new WeatherInfo();
/// <summary>
/// http://social.msdn.microsoft.com/Forums/en-US/4392c97a-3c6e-45b9-99c9-12a979c64910/c-20-jsonnet
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
try
{
url = "http://www.weather.com.cn/data/sk/101280601.html"; WebClient wc = new WebClient();
wc.Encoding = System.Text.Encoding.UTF8;//定义对象语言
json_data = wc.DownloadString(url);
//JsonConvert.DeserializeObject<Table>(json_data);
//var ser = new JavaScriptSerializer();
//we = _download_serialized_json_data<WeatherInfo>(url);
JsonSerializerSettings settings = new JsonSerializerSettings();
WeatherInfo we = JsonConvert.DeserializeObject<WeatherInfo>(json_data, new WeatherInfoConverter());// JsonConvert.DeserializeObject(json_data, Type.GetType, we); Response.Write("城市:"+we.city);
Response.Write("城市代码:" + we.cityid);
Response.Write("温度:" + we.temp);
Response.Write("发布时间:" + we.time);
//Response.Write(we.TheRest[""].ToString());
Response.Write("发风:" + we.WD);
Response.Write("湿度:" + we.SD); Dictionary<string, object> dict = we.TheRest;
//Response.Write(we.TheRest["WD"].ToString());
//for (int i = 0; i < dict.Count; i++)
//{
// Response.Write(dict.Keys.ToString());
// Response.Write(dict.Values.ToString()); //}
foreach (KeyValuePair<string, object> kvp in dict)
{
//outputBlock.Text += String.Format("Key = {0}, Value = {1}", kvp.Key, kvp.Value) + "\n";
string s = string.Format("键是:{0} 值是:{1}", kvp.Key.ToString(), (!object.Equals(kvp.Value, null) ? kvp.Value.ToString(): ""));
Response.Write(s);
} //Hashtable dict = new Hashtable();
//foreach (DictionaryEntry i in dict)
//{
// string s = string.Format("键是:{0} 值是:{1}", i.Key.ToString(), i.Value.ToString());
// Response.Write(s);
//} }
catch (JsonReaderException tu)
{
Response.Write(tu.Message.ToString());
} } //.net 4.0
//private static T _download_serialized_json_data<T>(string url) where T : new()
//{
// using (WebClient w = new WebClient())
// {
// string json_data = string.Empty;
// // attempt to download JSON data as a string
// try
// {
// json_data = w.DownloadString(url);
// }
// catch (Exception) { }
// // if string with JSON data is not empty, deserialize it to class and return its instance
// return !string.IsNullOrEmpty(json_data) ? JsonConvert.DeserializeObject<T>(json_data) : new T();
// }
//} }

http://james.newtonking.com/json

csharp:using Newtonsoft.Json.Net2.0 in .net 2.0 webform的更多相关文章

  1. C# 使用Newtonsoft.Json.dll 格式化显示Json串

    private string ConvertJsonString(string str) { //格式化json字符串 JsonSerializer serializer = new JsonSeri ...

  2. [DNX]解决dnu restore时找不到Newtonsoft.Json的问题

    在Mac上用最新版的dnx 1.0.0-beta5-11855进行dnu restore,出现下面的错误: System.IO.FileNotFoundException: Could not loa ...

  3. ASP.NET2.0 Newtonsoft.Json 操作类分享

    JSON 是现在比较流行的数据交互格式,NET3.0+有自带类处理JSON,2.0的话需要借助Newtonsoft.Json来完成,不然自己写的话,很麻烦. 网上搜索下载 Newtonsoft.Jso ...

  4. 【.net】“Newtonsoft.Json”已拥有为“Microsoft.CSharp”定义的依赖项。

    #事故现场: “Newtonsoft.Json”已拥有为“Microsoft.CSharp”定义的依赖项. #事故原因: 安装的Newtonsoft.Json版本为11.0.2,版本过高,与Micro ...

  5. Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b9a188c8922137c6

    未能加载文件或程序集“Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b9a188c8922137c6”或它的某一个 ...

  6. 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项 解决方法

    在webconfig中加入这段话就可以了 <runtime>    <assemblyBinding xmlns="urn:schemas-microsoft-com:as ...

  7. 未能加载文件或程序集“Newtonsoft.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=30a [问题点数:40分,结帖人u010259408]

    未能加载文件或程序集“Newtonsoft.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=30a [问题点数:40分,结帖人u01025 ...

  8. (已解决) 未能加载文件或程序集“Newtonsoft.Json, Version=4.0.0.0, Culture=neutral,

    在项目web.config里面添加: <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4F ...

  9. 无法解决“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”与“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”之间的冲突。正在随意选择“Newtonsoft.Jso

    今天的程序莫名报错:  无法解决“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed” ...

随机推荐

  1. MyEclipse迁移过程中Tomcat版本不一致的解决办法

    MyEclipse迁移过程中Tomcat版本不一致的解决办法 下面就是在MyEclipse2013迁移被Tomcat6.0X绑定的项目迁移到MyEclipse2014 Tomcat8.0X,报如下pr ...

  2. mac配置虚拟机的net模式

    a.点击PD的偏好设置进入 1)选择net模式(shared)(相当于VM的V8虚拟机) 2)勾选将mac连入当前的网络 3)勾选在网络系统偏好设置中显示网络连接 b.点击mac的网络系统偏好设置,可 ...

  3. openstack 的horizon的结构

    openstack的控制台应用horizon 特点: 1.界面的显示元素进行深度封装: 将元素的后台与前台模板结合在一起.制作html整个界面有点类似搭积木组合的方式. 2.模块加载: 根据权限对ur ...

  4. 基础篇:3.2)规范化:3d零件建模

    本章目的:规范化零件建模,这是机械的基本功夫. 1.建模的总体原则和总体要求 1.1 建模总体原则 a)零件模型应能准确表达零件的设计信息:b)零件模型包含零件的几何要素.约束要素和工程要素:c)零件 ...

  5. annotation-config和component-scan

    以前学到<context:annotation-config></context:annotation-config>和<context:component-scan b ...

  6. 服务器重启后Jenkins项目部分丢失问题解决方法

    1.进入webapps/jenkins/WEB-INF目录下,vi  web.xml 2.修改 HUDSON_HOME下的value为/root/.jenkins 3.重启Jenkins:http:/ ...

  7. JMeter工具接口性能压力测试分析与优化

    最近公司做的项目,要求对相关接口做性能压力测试,在这里记录一下分析解决过程. 压力测试过程中,如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大,TPS逐渐降低等.而问题定位分析通常情 ...

  8. Android自动化之AccessibilityService

    简介demo示例说明Manifest声明AccessibilityService的XML配置文件创建继承自AccessibilityService的服务类MainActivity检测服务是否开启UiA ...

  9. Mac下使用wireshark解决Interface为空的办法

    Terminal中运行chown <user-name> /dev/bpf*命令 <user-name>处替换为当前mac用户名

  10. cg教程

    Unity对shader的重点支持是cg语言,因为具有跨平台性质 Cg语言和CPU 上的C语言是很相似的,只不过有了自己的一套关键字和函数库 Cg语言的权威和入门教程在NVID1A的官方网站上,如果以 ...