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” ...
随机推荐
- ajax方法参数详解与$.each()和jquery里面each方法的区别
JQuery中$.ajax()方法参数详解 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为g ...
- noip提高组模拟赛(QBXT)T2
T2count题解 [ 问题描述]: 小 A 是一名热衷于优化各种算法的 OIER,有一天他给了你一个随机生成的 1~n 的排列, 并定 义区间[l,r]的价值为: \[ \huge C_{l,r}= ...
- HTTP请求处理流程-SpringMvc
1.在SpringMVC的http请求处理过程中,包括了前端控制器(DispatcherServlet).处理映射器(HandlerMapping).处理适配器(HandlerAdapter).处理器 ...
- spring测试save方法报错
用test类测试service的save方法时,报错如下: 2018-08-24 21:52:13,506 - could not read a hi value com.mysql.jdbc.exc ...
- 2019 CCPC-Wannafly Winter Camp Day4(Div2, onsite)
slove 6/11 A.夺宝奇兵 Code:zz Thinking:zz 贪心即可.这条路线里,点n1和点n2肯定是相连的,接下来,点(n-1)1和点(n-1)2分别是和n1和点n2相连的,一共有两 ...
- jquery加载单文件vue组件
/**注册组件 */ function registerComponent(name){ dm[name] = {}; Vue.component(name + '-component', funct ...
- R 升级版本
从3.4.1 升级到最新 懒得去官网下载 在R studio 执行一下代码 install.packages("installr") library(installr) updat ...
- 2.5 Go 算术运算与变量使用技巧
变量作用域 简单来说,GO的变量以块为范围:一个if-else的块,就可以包含一个变量的生命周期.变量的声明,要在使用之前. package main import ( "fmt" ...
- Java 覆写初探
Java 覆写 继承性的主要特征是子类可以根据父类已有的功能进行功能扩展,但是在子类定义属性或方法的时候有可能定义属性和方法和父类同名,在此类情况下就称为:“覆写”. 方法的覆写:[改良原本功能不足的 ...
- 关于CSS3动画性能
前天我去面试了...好吧,对于自己6年6份工作的悲催经历,我自己也是醉了. 但没办法,我这种当时上学没好好学习,临毕业才出家写代码的半吊子码农,起步没起好,以至于一直没能找到真正让自己满意的工作. 通 ...