windows phone 中的 json解析

本文介绍了一种使用C#进行JSON数据解析的方法,并展示了如何通过WPF将解析后的数据呈现在用户界面上。同时,提供了两种不同的JSON模型,分别用于处理轮播图片信息和天气信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.cnblogs.com/shizhenglg/archive/2013/02/25/2932279.html

添加System.Servicemodel.Web程序集,using System.Runtime.Serialization.Json需要此程序集

 public class TopRotateImage
    {
        private string _id;

        public string id
        {
            get { return _id; }
            set { _id = value; }
        }
        private string _image;

        public string image
        {
            get { return _image; }
            set { _image = value; }
        }
        private string _intro;

        public string intro
        {
            get { return _intro; }
            set { _intro = value; }
        }
    }
 public class WeatherInfo
    {

        public string city { get; set; }
        //public string cityid { get; set; }
        //public string date_y { get; set; }
        //public string week { get; set; }
        //public string temp1 { get; set; }
        //public string temp2 { get; set; }
        //public string temp3 { get; set; }
        //public string temp4 { get; set; }
        //public string temp5 { get; set; }
        //public string weather1 { get; set; }
        //public string weather2 { get; set; }
        //public string weather3 { get; set; }
        //public string weather4 { get; set; }
        //public string weather5 { get; set; }
        //public string wind1 { get; set; }
        //public string index48_d { get; set; }  //index48_d
    }
    public class WeInfo 
    {
        public WeatherInfo weatherinfo { get; set; } 
    
    }



 

以上是两个不同json需要的model

xaml

<ListBox x:Name="wList"  SelectionChanged="wList_SelectionChanged_1">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding intro}" Width="200" Height="200" Foreground="Red"/>
                            <!--<TextBlock Text="{Binding city}" Width="200" Height="200" Foreground="Red"/>-->
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

后台数据解析用到的帮助类

public class JsonParser
    {
        //序列化,json字符串
        public static string Serialize(object objectToSerialize)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(objectToSerialize.GetType());
                serializer.WriteObject(ms, objectToSerialize);
                ms.Position = 0;
                using (StreamReader reader = new StreamReader(ms))
                {
                    return reader.ReadToEnd();
                }
            }
        }

        //反序列化,解析json转成对象
        public static T Deserialize<T>(string jsonString)
        {
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                return (T)serializer.ReadObject(ms);
            }
        }

读取是需要这个类

public class ReadJson
    {
        /// <获取Json内容>
        /// 获取Json内容
        /// </获取Json内容>
        /// <param name="jsonstream">Json流</param>
        /// <returns>返回string 类型Json内容</returns>
        public static string ReturnJsonContent(Stream jsonstream)
        {
            StreamReader sr = new StreamReader(jsonstream);
            return sr.ReadToEnd();
        }
    }

后台的解析

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
        {
            WebClient wc = new WebClient();
            wc.DownloadStringCompleted += wc_DownloadStringCompleted;
            wc.DownloadStringAsync(new Uri("http://gaobo.zcom.com:8089/zcomreader/recommend/index_slide"));
            //wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
            //wc.OpenReadAsync(new Uri("http://gaobo.zcom.com:8089/zcomreader/recommend/index_slide"));
        }

        void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            List<TopRotateImage> weInfo = new List<TopRotateImage>();
            weInfo = JsonParser.Deserialize<List<TopRotateImage>>(e.Result);
            wList.ItemsSource = weInfo;
        }
        //List<TopRotateImage> weInfo = new List<TopRotateImage>();
        //void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        //{
        //    string str = ReadJson.ReturnJsonContent(e.Result);
        //    MessageBox.Show(str);
        //    weInfo = JsonParser.Deserialize<List<TopRotateImage>>(str);
        //    wList.ItemsSource = weInfo;
        //}
        //private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
        //{
        //    WebClient wc = new WebClient();
        //    wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
        //    wc.OpenReadAsync(new Uri("http://m.weather.com.cn/data/101180101.html"));
        //}
        //List<WeatherInfo> weInfo = new List<WeatherInfo>();
        //void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        //{
        //    string str = ReadJson.ReturnJsonContent(e.Result);
        //    MessageBox.Show(str);
        //    WeInfo weinfo = JsonParser.Deserialize<WeInfo>(str);
        //    weInfo.Add(weinfo.weatherinfo);
        //    //MessageBox.Show(weinfo.weatherinfo.city);
            
        //    wList.ItemsSource = weInfo;
        //}
       
        private void wList_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            //if (wList.SelectedIndex != -1)
            //{
            //    MessageBox.Show(((WeatherInfo)wList.SelectedItem).city);
            //}
            if (wList.SelectedIndex != -1)
            {
                MessageBox.Show(((TopRotateImage)wList.SelectedItem).intro);
            }
        }

用newtinsoft.json解析

 

 List<TopRotateImage> wilist = new List<TopRotateImage>();
        //void wb_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        //{
         
            //MessageBox.Show(e.Result);
           
            //if (e.Result.Length <= 0 || e.Error != null || e.Cancelled)
            //{
            //    MessageBox.Show("获取天气预报失败!");
            //    return;
            //}

            //JObject json = JObject.Parse(e.Result);//用Jobject解析json数据

            //wilist.Add(new WeatherInfo
            //{
            //    city = (string)json["weatherinfo"]["city"],
            //    cityid = (string)json["weatherinfo"]["cityid"],
            //    date_y = (string)json["weatherinfo"]["date_y"],
            //    week = (string)json["weatherinfo"]["week"],
            //    index48_d = (string)json["weatherinfo"]["index48_d"],
            //    wind1 = (string)json["weatherinfo"]["wind1"],
            //    temp1 = (string)json["weatherinfo"]["temp1"],
            //    temp2 = (string)json["weatherinfo"]["temp2"],
            //    temp3 = (string)json["weatherinfo"]["temp3"],
            //    temp4 = (string)json["weatherinfo"]["temp4"],
            //    temp5 = (string)json["weatherinfo"]["temp5"],
            //    weather1 = (string)json["weatherinfo"]["weather1"],
            //    weather2 = (string)json["weatherinfo"]["weather2"],
            //    weather3 = (string)json["weatherinfo"]["weather3"],
            //    weather4 = (string)json["weatherinfo"]["weather4"],
            //    weather5 = (string)json["weatherinfo"]["weather5"]
            //});
            //wList.ItemsSource = wilist;
        //}


 

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值