Json的解析

来源:互联网 发布:中国移动4g网络畅玩包 编辑:程序博客网 时间:2024/06/11 07:14
解析这样的Json:
{errcode : 返回错误码,msg : 错误信息,ret : 返回值,0-成功,非0-失败,data : {timestamp : 服务器时间戳,hasnext : 0-表示还有数据,1-表示下页没有数据,info : {name : 帐户名,openid : 用户唯一id,与name相对应,nick : 昵称,head : 头像url,sex : 用户性别,1-男,2-女,0-未填写,fansnum : 听众数,idolnum : 收听人数,isfans : 是否我的粉丝,0-不是,1-是,isvip : 是否名人用户}},seqid : 序列号}

其中的Info会有多个。

使用的是Newtonsoft.Json.Net.dll,必须先下这个dll,再引用进来。

假设string ret="json的字符串,如上格式"

第一种:

JObject jo1 = JObject.Parse(ret);        var stt=jo1["data"]["info"].Select(p => p["name"]).ToList();
第二种:
            JObject jo = (JObject)JsonConvert.DeserializeObject(ret);            if (jo["errcode"].ToString() == "0")            {                List<JToken> arrInfo = jo["data"]["info"].ToList<JToken>();//读出来的Person对象                List<Person> personList = arrInfo.Select(p => new Person                {                    Name = p["name"].ToString(),                    OpenId = p["openid"].ToString(),                    FansNum = (int)p["fansnum"],                    IdolNum = (int)p["idolnum"],                    IsFans = p["IsFans"]==null?false:(bool)p["IsFans"],                    IsVip = p["IsVip"] == null ? false : (bool)p["IsVip"]                }).ToList();                   }
第三种:
            JObject jo = (JObject)JsonConvert.DeserializeObject(ret);            if (jo["errcode"].ToString() == "0")            {                StringBuilder sbInfo = new StringBuilder();                                List<JToken> arrInfo = jo["data"]["info"].ToList<JToken>();                foreach (JToken item in arrInfo)                {                    sbInfo.AppendLine(item["name"] + "\t\t" + item["openid"] + "\t\t" + item["fansnum"] + "\t\t" + item["idolnum"]);                }                textOutput.Text = sbInfo.ToString();  }
	
				
		
原创粉丝点击