csharp:using Newtonsoft.Json.Net2.0 in .net 2.0 webform
/// <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的更多相关文章
- C# 使用Newtonsoft.Json.dll 格式化显示Json串
private string ConvertJsonString(string str) { //格式化json字符串 JsonSerializer serializer = new JsonSeri ...
- [DNX]解决dnu restore时找不到Newtonsoft.Json的问题
在Mac上用最新版的dnx 1.0.0-beta5-11855进行dnu restore,出现下面的错误: System.IO.FileNotFoundException: Could not loa ...
- ASP.NET2.0 Newtonsoft.Json 操作类分享
JSON 是现在比较流行的数据交互格式,NET3.0+有自带类处理JSON,2.0的话需要借助Newtonsoft.Json来完成,不然自己写的话,很麻烦. 网上搜索下载 Newtonsoft.Jso ...
- 【.net】“Newtonsoft.Json”已拥有为“Microsoft.CSharp”定义的依赖项。
#事故现场: “Newtonsoft.Json”已拥有为“Microsoft.CSharp”定义的依赖项. #事故原因: 安装的Newtonsoft.Json版本为11.0.2,版本过高,与Micro ...
- Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b9a188c8922137c6
未能加载文件或程序集“Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b9a188c8922137c6”或它的某一个 ...
- 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项 解决方法
在webconfig中加入这段话就可以了 <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:as ...
- 未能加载文件或程序集“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 ...
- (已解决) 未能加载文件或程序集“Newtonsoft.Json, Version=4.0.0.0, Culture=neutral,
在项目web.config里面添加: <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4F ...
- 无法解决“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” ...
随机推荐
- 省选后CTS/APIO前文化课划水记
目前没有什么明确的目标,所以就叫划水吧. 第一周 4.9 (Tue) 早上 10:00 到学校,然后去仓库找了张桌子,搬到教室,开始自习生活. 拿出"必背古诗文",发现除了< ...
- vue关闭令人抓狂的ESlint 语法检测配置方法
随便改个vue 一堆报错 其实我并不反对这些语法检测,但是像许多反个人意愿的那就真的不得不吐槽了,比如vue-cli脚手架创建的默认eslint规则: 代码末尾不能加分号 ; 代码中不能存在多行空行 ...
- 实现CTF智能合约题目的环境部署
本文章是参考一位大佬博客学来的. 智能合约题的环境主要包括两部分:一个是智能合约的部署,另一个就是监听合约事件进而发送flag的脚本. 智能合约部署 这里写的合约是指solidity合约,使用Remi ...
- CoreText 图文混排
基本原理 https://www.cnblogs.com/purple-sweet-pottoes/p/5109413.html CoreText(一):基本用法 https://blog.csdn ...
- JavaWeb学习笔记(十七)—— 数据库连接池
一.数据库连接池概述 1.1 为什么使用数据库连接池 如果用户每次请求都向数据库获得连接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建1 ...
- SPOJ - TTM 主席树
给你一个系列\(a[1...n]\),要求可以区间求和,区间更新,也可以回溯过去 经典的主席树板子题,很久以前做的题了,代码太丑回炉重写 PS.题目标题To The Moon也是我最喜欢的游戏之一 这 ...
- Servlet验证
一.servlet代码 二.验证 三.总结 在这个servlet验证过程当中,主要是解码方式的运用,特别是输入中文时容易出现乱码.在表单的action中需要输入路径. 四.网盘 链接:https:// ...
- Oracle远程数据建物化视图(materialized)创建简单记录,以及DBLINK的创建
目的:实现远程数据库访问及其相应表的定时同步 一.远程数据库dblink的创建 select * from dba_db_links; select * from user_sys_privs;--查 ...
- Sqlite shell 的使用
学习python中,涉及SQLite3数据库的操作,其中一种是使用sqlite shell,在园子里找到下面这篇文章,跟着试了下,挺好. 这里要注意,语句是C语言规范的吧,语句末尾需要";& ...
- MySQL保留字冲突 关键词:保留字, 关键字
在Mysql中,当表名或字段名乃至数据库名和保留字冲突时,在sql语句里可以用撇号`(Tab键上方的按键)括起来. 注意,只有保留字需要``括起来,非保留字的关键字不需要. MySQL 8.0 官方文 ...