登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

扶红星的博客

生活本无味,尝试的多了也便五味俱全了。

 
 
 

日志

 
 

程序开发中关于解析json格式数据的实例  

2013-07-30 16:34:56|  分类: 知识梳理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
说明:在程序开发过程中我们往往会遇到XML或者JSON格式的数据有待我们去解析或者是维护,例如在某些开放平台下做的某些接口开发,我们获取的数据一般都是这两种格式的,由此就需要我们去将其进行解析、存储,便于后期应用和维护。以下针对几种json格式字符串进行解析说明。

一、在后台程序中建立一个封装类(jsontest,完成数据模型的创建,代码如下:
 
public class jsontest
    {
        private string uid;
        public string Uid
        {
            get { return uid; }
            set { uid = value; }
        }
        private string name;
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                if (name == value)
                    return;
                name = value;
            }
        }
        private int age;
        public int Age
        {
            get
            {
                return age;
            }
            set
            {
                if (age == value)
                    return;
                age = value;
            }
        }
    }

二、在后台页面中写方法对几种类型的json数据进行解析,代码如下:
 
protected void Page_Load(object sender, EventArgs e)
        {
            //string json = GetHtmlSource(url);//获取网页中的json格式字符串

            //1.类目形式

程序开发中关于解析json格式数据的实例 - 盛情渊 - 南宫云遥的博客
             string json1 = "{\"uid\":\"1\",\"name\":\"张三\",\"age\":\"13\"}";
             jsontest token = JsonConvert.DeserializeObject<jsontest>(json1);
            string uids1 = token.Uid;
            string names1 = token.Name;
            int ages1 = token.Age;

            //2.数组形式

程序开发中关于解析json格式数据的实例 - 盛情渊 - 南宫云遥的博客
             string json2 = "[{\"uid\":\"1\",\"name\":\"张三\",\"age\":\"13\"},{\"uid\":\"2\",\"name\":\"李四\",\"age\":\"24\"}]";
            List<jsontest> appResult = JSONToObject<List<jsontest>>(json2);
            for (int i = 0; i < appResult.Count; i++)
            {
                string uids2 = appResult[i].Uid.ToString();
                string names2 = appResult[i].Name.ToString();
                int ages2 = appResult[i].Age;
            }

            //3.多重嵌套形式

程序开发中关于解析json格式数据的实例 - 盛情渊 - 南宫云遥的博客
             string json3 = "{\"peoplelist\":{\"province\":\"浙江\",\"person\":[{\"uid\":\"1\",\"name\":\"张三\",\"age\":\"13\"},{\"uid\":\"2\",\"name\":\"李四\",\"age\":\"24\"}]}}";
            JObject jo = (JObject)JsonConvert.DeserializeObject(json3);
            string pro = jo["peoplelist"]["province"].ToString();//这里获取的json值是“浙江”

            string json4 = jo["peoplelist"]["person"].ToString();//将“person”单独拿出来作为一个新的json数据进行解析
            List<jsontest> appResult2 = JSONToObject<List<jsontest>>(json4);
            for (int j = 0; j < appResult2.Count; j++)
            {
                string uids3 = appResult2[j].Uid.ToString();
                string names3 = appResult2[j].Name.ToString();
                int ages3 = appResult2[j].Age;
            }
        }

 //实现数组形式json格式数据解析
        public static T JSONToObject<T>(string jsonText)
        {
            System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
            try
            {
                return jss.Deserialize<T>(jsonText);
            }
            catch (Exception ex)
            {
                throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
            }
        }

//将链接对应网页中的内容以字符串的形式输出
 public static string GetHtmlSource(string url)
        {
            //处理内容  
            string html = "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                System.IO.Stream stream = response.GetResponseStream();
                StreamReader reader = new StreamReader(stream, Encoding.Default);
                html = reader.ReadToEnd();
                stream.Close();
            }
            catch (Exception e)
            {
            }
            return html;
       }
       

  评论这张
 
阅读(615)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018