str="[{"userId":17689926,"uin":17848887,"userName":"\u7dc8\u8ae8d\u0451\u857e\u857e","headPic":"http:\/\/qlogo4.store.qq.com\/qzonelogo\/17848887\/1\/1258952639","yellowlevel":"4","yellowstatus":1,"exp":108809,"money":474088,"pf":1},{"userId":323423231,"uin":323170725,"userName":"\u8303\u6c38\u82b3","headPic":"http:\/\/imgcache.qq.com\/qzone_v4\/client\/userinfo_icon\/5001.gif","yellowlevel":"0","yellowstatus":0,"exp":21697,"money":341296,"pf":1}] ";
 [DataContract]
    public class QQfriendList
{
        public QQfriendList() { }        [DataMember(Name = "TQQfriend")] 
        public QQfriend[] TQQfriend { get; set; }      
}    [DataContract]
    public class QQfriend
    {
        
        [DataMember(Name = "userId")]
        public string userId { get; set; }
        [DataMember(Name = "uin")]
        public string uin { get; set; }
        [DataMember(Name = "userName")] 
        public string userName { get; set; }
        [DataMember(Name = "headPic")] 
        public string headPic { get; set; }
        [DataMember(Name = "yellowlevel")]
        public string yellowlevel { get; set; }
        [DataMember(Name = "yellowstatus")]
        public string yellowstatus { get; set; }
        [DataMember(Name = "exp")]
        public string exp { get; set; }
        [DataMember(Name = "money")]
        public string money { get; set; }
        [DataMember(Name = "pf")]
        public string pf { get; set; }
    }
--------------------------------------------------------代码
 MemoryStream mStream = new MemoryStream(str);
 System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(QQfriendList));
        friendlist = (QQfriendList)serializer.ReadObject(mStream);        foreach (QQfriend tt in friendlist.TQQfriend)
               {
                    richTextBox1.AppendText(string.Format("{0}userName\r\n", tt.userName));
               }
为什么friendlist.TQQfriend是空的啊!!急!!

解决方案 »

  1.   

    你的str里面,压根儿没有QQFriend这个根属性啊……
      

  2.   

    public static T ParseFromJson<T>(string strJson)
            {
                T obj = Activator.CreateInstance<T>();
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)))
                {
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
                    return (T)serializer.ReadObject(ms);
                }
            }
    序列化对象添加到TQQfriend