/// <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. GPUImage处理图片(滤镜)

    GPUImage 是基于 GPU 处理图像的一个开源库, 提供了各种图像处理滤镜,例如调 亮度/饱和度/曝光度/白平衡/锐化等滤镜. 并且支持照相机/摄像机 的实时滤镜. GPUImage采用链式方式 ...

  2. JAVA static深入了解

    static关键字: 1)static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享:2)只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的 ...

  3. 如何打开java监控

    直接在cmd中输入 1.jconsole 2.jvisualvm

  4. mysql编码不统一形成的错误

    错误提示:[Err]1267 - Illegal mix of collations(utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) ...

  5. Spring异常:Annotation-specified bean name.. for bean class ...

    Spring重命名问题.对照项目中的注解,查找@Service是否重重名.由于Spring是在注解下按配置扫描的方式去创建对象的,那么两个重名的注解也就不成立了. 备注,特别注意test包下有没有通过 ...

  6. restsharp 组件调用返回 gbk 编码的api,中文乱码解决方法。(restsharp response 中文乱码 gbk)

    最近要调一个restful风格的api 用了 一个开源第三方组件,组件还是蛮好用的, 支持直接按参数定义实体类,然后发起请求之前直接 addobject 的方式就把请求参数给添加进去了, 解码的时候可 ...

  7. Net操作Excel,不依赖服务器端环境配置(终极方法NPOI)转。

    这是起因,为什么会需要用到这个,主要是分析了一下为什么从oledb那个方式换成这个方式.文章见链接 http://www.cnblogs.com/Jerseyblog/p/6410703.html 前 ...

  8. Centos 7网卡设置

    #yum install net-tools.x86_64 #cd /etc/sysconfig/network-scripts/ #mv ifcfg-eno16780032 ifcfg-eth0 手 ...

  9. CentOS下安装官方RPM包的MySQL后找不到my.cnf

    PS:昨天一同事问我说他用MySQL 5.5官方的rpm包安装了,但是在/etc/下面没有my.cnf配置文件.官方rpm包安装的mysql默认确实是没有/etc/my.cnf. 为什么没有这个文件而 ...

  10. Python学习--两种方法爬取网页图片(requests/urllib)

    实际上,简单的图片爬虫就三个步骤: 获取网页代码 使用正则表达式,寻找图片链接 下载图片链接资源到电脑 下面以博客园为例子,不同的网站可能需要更改正则表达式形式. requests版本: import ...