不能将JSON反序列化为自定义对象列表,返回null

本文关键字:列表 返回 null 对象 自定义 JSON 反序列化 不能 | 更新日期: 2023-09-27 18:12:01

我寻找了一个答案,发现了一些类似的,但不完全是我的情况。

所以,我有一个URL,当我请求返回JSON。Json是这样的:

    {"12458":{"id":"12458","name":"Deccal","short":"<p>H'u0259yat'u0131n'u0131n s'u0131x'u0131nt'u0131l'u0131 vaxtlar'u0131n'u0131 ya'u015fayan Duygu, x'u0259st'u0259xanadan 
&ccedil;'u0131xd'u0131qdan sonra t'u0259sad&uuml;f'u0259n Nurdan ad'u0131nda...<'/p>","full":"<p>H'u0259yat'u0131n'u0131n s'u0131x'u0131nt'u0131l'u0131 vaxtlar'u0131n'u0131 ya'u015fayan 
Duygu, x'u0259st'u0259xanadan &ccedil;'u0131xd'u0131qdan sonra t'u0259sad&uuml;f'u0259n Nurdan ad'u0131nda, sirli v'u0259 o q'u0259d'u0259r d'u0259 varl'u0131 qad'u0131nla tan'u0131'u015f 
olur. Nurdan'u0131n maddi v'u0259 m'u0259n'u0259vi k&ouml;m'u0259yini, ehtiyac'u0131 oldu'u011fu &uuml;&ccedil;&uuml;n q'u0259bul ed'u0259n Duy'u011funun h'u0259yat'u0131 inan'u0131lmaz 
d'u0259yi'u015fir. 'u018fn yax'u0131n dostu Asl'u0131 da bu v'u0259ziyy'u0259td'u0259n raz'u0131d'u0131r. Amma sonradan Duygunun yerl'u0259'u015fdiyi q'u0259rib evd'u0259 q'u0259rib'u0259 
hadis'u0259l'u0259r ba'u015f verm'u0259y'u0259 ba'u015flay'u0131r. Duygu haradan g'u0259ldiyi bilinm'u0259y'u0259n s'u0259sl'u0259r e'u015fidir v'u0259 k&ouml;lg'u0259l'u0259r 
i&ccedil;ind'u0259 psixologiyas'u0131 daha da pisl'u0259'u015fir. Dig'u0259r t'u0259r'u0259fd'u0259n d'u0259, x'u0259st'u0259xanada iki q'u0131z'u0131 da yeni x'u0259b'u0259rl'u0259r 
g&ouml;zl'u0259yir.<'/p>'n<p>Rejissor:&nbsp;&Ouml;zg&uuml;r Bakar&nbsp;<'/p>'n<p>Ssenarist:&nbsp;Alper K'u0131v'u0131lc'u0131m, &Ouml;zg&uuml;r 
Bakar&nbsp;<'/p>","dates":[{"place":"'"Nizami'" kinoteatr'u0131","dates":"20 avqust - 10 sentyabr","prices":["14:45 : 4 AZN","18:50 : 7 AZN"]}]},"11949":{"id":"11949","name":"Kocan kadar 
konus","short":"<p>Filmd'u0259 h'u0259yat'u0131n'u0131n do'u011fru insan'u0131n'u0131 tapa bilm'u0259y'u0259n bir qad'u0131n'u0131n hekay'u0259sind'u0259n b'u0259hs 
edilir<'/p>","full":"<p>'u015e'u0259bn'u0259m Burcuo'u011flunun eyni adl'u0131 roman'u0131 'u0259sas'u0131nda &ccedil;'u0259kilmi'u015f filmd'u0259 h'u0259yat'u0131n'u0131n do'u011fru 
insan'u0131n'u0131 tapa bilm'u0259y'u0259n bir qad'u0131n'u0131n hekay'u0259sind'u0259n b'u0259hs edilir.<'/p>'n<p>Rollarda:&nbsp;Ejqi Mola,&nbsp;Murad 
Y'u0131ld'u0131r'u0131m<'/p>","dates":[{"place":"28 Cinema","dates":"15 avqust - 11 sentyabr","prices":["15:40 : 5 AZN"]}]},...

有很多对象的结构像:

{
string id,
string name,
string short,
string full,
string dates{
string place,
string dates,
string[] prices
}
}.
我班上

[DataContract]
public class FilmList
{
    [DataMember]
    public List<Film> films { get; set; }
    public class Film
    {
        [DataMember(Name = "id")]
        public string id { get; set; }
        [DataMember(Name = "name")]
        public string name { get; set; }
        [DataMember(Name = "short")]
        public string s { get; set; }
        [DataMember(Name = "full")]
        public string full { get; set; }
        [DataMember(Name = "dates")]
        public Dates dates { get; set; }
        public class Dates
        {
            [DataMember(Name = "place")]
            public string place { get; set; }
            [DataMember(Name = "dates")]
            public string dates { get; set; }
            [DataMember(Name = "prices")]
            public List<string> prices { get; set; }
        }
    }
}

DataContractJsonSerializer j = new DataContractJsonSerializer(typeof(FilmList));
        //Film f = null;
        JavaScriptSerializer ser = new JavaScriptSerializer();
        using (var s = resp.GetResponseStream())//var sr = new StreamReader(resp.GetResponseStream()))
        {
            //var s = ser.Serialize(sr.ReadToEnd());
            //f = (Film)j.ReadObject(s);
            FilmList f = (FilmList)j.ReadObject(s);//ser.Deserialize<FilmList>(sr.ReadToEnd());
            //var json = ser.Deserialize<FilmList>(sr.ReadToEnd());
        }
        resp.Close();

我尝试了DataContractJsonSerializer和JavaScriptSerializer,两者都返回null。我认为这可能是因为JSON没有标题元素-只是对象列表,但我不确定。

不能将JSON反序列化为自定义对象列表,返回null

这是因为您的json格式不正确,请在http://jsonlint.com/上验证您的json

尝试解析下面提到的Json,它会解析。

{
    "12458": {
        "id": "12458",
        "name": "Deccal",
        "short": "<p>Həyatının sıxıntılı vaxtlarını yaşayan Duygu, xəstəxanadan &ccedil;ıxdıqdan sonra təsad&uuml;fən Nurdan adında...</p>",
        "full": "<p>Həyatının sıxıntılı vaxtlarını yaşayan Duygu, xəstəxanadan &ccedil;ıxdıqdan sonra təsad&uuml;fən Nurdan adında, sirli və o qədər də varlı qadınla tanış olur. Nurdanın maddi və mənəvi k&ouml;məyini, ehtiyacı olduğu &uuml;&ccedil;&uuml;n qəbul edən Duyğunun həyatı inanılmaz dəyişir. Ən yaxın dostu Aslı da bu vəziyyətdən razıdır. Amma sonradan Duygunun yerləşdiyi qərib evdə qəribə hadisələr baş verməyə başlayır. Duygu haradan gəldiyi bilinməyən səslər eşidir və k&ouml;lgələr i&ccedil;ində psixologiyası daha da pisləşir. Digər tərəfdən də, xəstəxanada iki qızı da yeni xəbərlər g&ouml;zləyir.</p>'n<p>Rejissor:&nbsp;&Ouml;zg&uuml;r Bakar&nbsp;</p>'n<p>Ssenarist:&nbsp;Alper Kıvılcım, &Ouml;zg&uuml;r Bakar&nbsp;</p>",
        "dates": [
            {
                "place": "'"Nizami'" kinoteatrı",
                "dates": "20 avqust - 10 sentyabr",
                "prices": [
                    "14:45 : 4 AZN",
                    "18:50 : 7 AZN"
                ]
            }
        ]
    }
}