解析这样的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();
}