·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> csharp:using Newtonsoft.Json.Net2.0 in .net 2.0 webform

csharp:using Newtonsoft.Json.Net2.0 in .net 2.0 webform

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

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_