{"total":1,"root":[{"birthday":"1987-09-09","sex":"男","post":"611756","fax":"1234565","education":"4","mobilephone":"13194879680","rank":"经理","email":"[email protected]","address":"四川成都交大","idcode":"510502199001200014","name":"李镀","account":"002","branch":"监察科","telephone":"0830-2396906"}]}以上是我接收到的数据。现在问题是怎么把他们解析并在winform中显示出来

解决方案 »

  1.   

    http://james.newtonking.com/pages/json-net.aspx
      

  2.   

    赚赚
    /// <summary>
            /// Dictionary<string, string> 转实体自动赋值
            /// </summary>
            /// <param name="row">JSON转的Dictionary<string, string>[]</param>
            /// <param name="targetObj">实体object</param>
            /// <returns>实体object</returns>
            public object ChangeToObject(string json, object targetObj)
            {
                if (json != "" || json != null || targetObj != null)
                {
                    Dictionary<string, string>[] companies = JSON.Deserialize<Dictionary<string, string>[]>(json);                PropertyInfo[] propinfos = propinfos = targetObj.GetType().GetProperties();                for (int i = 0; i < propinfos.Length; i++)
                    {
                        foreach (var item in companies[0])
                        {
                            if (item.Key == propinfos[i].Name)
                            {
                                //如果是nullable类型则需要以其他方法获取类型
                                if (propinfos[i].PropertyType.IsGenericType && propinfos[i].PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
                                {
                                    //类型转换
                                    object ValueA = Convert.ChangeType(item.Value, propinfos[i].PropertyType.GetGenericArguments()[0]);
                                    //自动匹配赋值
                                    propinfos[i].SetValue(targetObj, ValueA, null);
                                }
                                else
                                {
                                    object ValueB = Convert.ChangeType(item.Value, propinfos[i].PropertyType);
                                    propinfos[i].SetValue(targetObj, ValueB, null);
                                }
                                break;
                            }
                        }
                    }
                    return targetObj;
                }
                return null;
            }
      

  3.   

    net提供了类库:
    using System.Runtime.Serialization.Json;
    using System.Runtime.Serialization;
        [DataContract]
        public class DataContruct
        {
            [DataMember]
            internal string total;        [DataMember]
            IEnumerable<rootData> root;
        }    [DataContract]
        public class rootData
        {
            [DataMember]
            internal string birthday;        [DataMember]
            internal string sex;        [DataMember]
            internal string post;        [DataMember]
            internal string fax;        [DataMember]
            internal string education;        [DataMember]
            internal string mobilephone;        [DataMember]
            internal string rank;
            [DataMember]
            internal string email;
            [DataMember]
            internal string address;
            [DataMember]
            internal string idcode;        [DataMember]
            internal string name;
            [DataMember]
            internal string account;
            [DataMember]
            internal string branch;
            [DataMember]
            internal string telephone;    }....
                string testdata = "{\"total\":1,\"root\":[{\"birthday\":\"1987-09-09\",\"sex\":\" 男\",\"post\":\"611756\",\"fax\":\"1234565\",\"education\":\"4\",\"mobilephone\":\"13194879680\",\"rank\":\" 经理\",\"email\":\"[email protected]\",\"address\":\"四川成都交大\",\"idcode\":\"510502199001200014\",\"name\":\"李镀\",\"account\":\"002\",\"branch\":\"监察科\",\"telephone\":\"0830-2396906\"}]}";            MemoryStream stream2 = new MemoryStream();
                DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(DataContruct));
                StreamWriter wr = new StreamWriter(stream2);
                wr.Write(testdata);
                wr.Flush();
                stream2.Position = 0;
                Object obj = ser2.ReadObject(stream2);
                DataContruct p2 = (DataContruct)obj;
    ....