没找到有关问题的原因在哪里 求高手帮忙~

没找到问题的原因在哪里 求高手帮忙~~~
本帖最后由 hufanrong123 于 2014-08-26 12:02:56 编辑
最近正在写一个小爬虫 获取到的源码如下:

{
    "content": {
        "data": {
            "list": [
                {
                    "cat": "长城润滑油",
                    "zro": "印度神油"
                },
{
                    "cat": "gass气",
                    "zro": "中石化基友"
                }
            ],
            "allPage": 10
        },
        "code": 0
    },
    "hasError": false
}


反序列化的类:

class SCK_Class
    {
        private Content_Class content;
        private bool hasError;
}
public class Content_Class
    {
        private Data_Class data;
        private int code;
}
    public class Data_Class
    {
        private List_Class[] list;
        private int allPage;
    }
    public class List_Class
    {
        private string cat;
        private int gbSpv;
    }


使用的代码:

var sw = new DataContractJsonSerializer(typeof(SCK_Class));
var obj = (SCK_Class)sw.ReadObject(new MemoryStream(Encoding.Unicode.GetBytes(str)));
//下面的一句会出错:未将对象引用设置到对象的实例
MessageBox.Show(obj.content.data.list.Length.ToString());


求高手看一下我错在哪里 我觉得没错呀~~没找到有关问题的原因在哪里 求高手帮忙~

------解决方案--------------------
楼主,送你段可用代码

[DataContract]
    class SCK_Class
    {
        [DataMember(Name = "content")]
        public Content_Class content { get; set; }
        [DataMember(Name = "hasError")]
        public bool hasError { get; set; }
    }
    [DataContract]
    public class Content_Class
    {
        [DataMember(Name = "data")]
        public Data_Class data { get; set; }
        [DataMember(Name = "code")]
        public int code { get; set; }
    }
    [DataContract]
    public class Data_Class
    {
        [DataMember(Name = "list")]
        public List_Class[] list { get; set; }
        [DataMember(Name = "allPage")]
        public int allPage { get; set; }
    }
    [DataContract]
    public class List_Class
    {
        [DataMember(Name = "cat")]
        public string cat { get; set; }
        [DataMember(Name = "zro")]
        public string gbSpv { get; set; }
    }

------解决方案--------------------
private int gbSpv;应该是string吧