Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Json.net无法反序列化到类/子类_C#_Json_Json Deserialization - Fatal编程技术网

C# Json.net无法反序列化到类/子类

C# Json.net无法反序列化到类/子类,c#,json,json-deserialization,C#,Json,Json Deserialization,我正在尝试反序列化提供的Json,但是当下载工作正常并且反序列化不会抛出错误时,结果对象是RootObjectSingle,只包含一个空值的RootObject。有人能看到我在阻止数据级联到正确的类方面做错了什么吗 理想用户代码: List ImportHolder = new List(); string JsonControlString = "S"; ; foreach (string Json1 in JsonList)

我正在尝试反序列化提供的Json,但是当下载工作正常并且反序列化不会抛出错误时,结果对象是RootObjectSingle,只包含一个空值的RootObject。有人能看到我在阻止数据级联到正确的类方面做错了什么吗

理想用户代码:

        List ImportHolder = new List();
        string JsonControlString = "S";
        ;


        foreach (string Json1 in JsonList)
        {
            string Json2 = Json1;
            JsonControlString = UnpackJson<string>(Json2);

             JsonControl = JsonConvert.DeserializeObject<RootObjectSingle>(JsonControlString);
...}

如果你陈述了一个明确的问题,那么就更容易提供帮助添加反序列化代码示例肯定会有帮助,这不太容易看到,但最后我不得不构建一个自定义反序列化程序,强制执行该结构。
public class List
{
    [JsonProperty]
    public string feed { get; set; }
    [JsonProperty]
    public string product_device { get; set; }
    [JsonProperty]
    public string unified_product_name { get; set; }
    [JsonProperty]
    public int? product_franchise_id { get; set; }
    [JsonProperty]
    public string product_category { get; set; }
    [JsonProperty]
    public int rank { get; set; }
    [JsonProperty]
    public object parent_company_id { get; set; }
    [JsonProperty]
    public string publisher_name { get; set; }
    [JsonProperty]
    public string category { get; set; }
    [JsonProperty]
    public object company_id { get; set; }
    [JsonProperty]
    public string product_franchise_name { get; set; }
    [JsonProperty]
    public string company_name { get; set; }
    [JsonProperty]
    public bool has_iap { get; set; }
    [JsonProperty]
    public object publisher_id { get; set; }
    [JsonProperty]
    public string product_name { get; set; }
    [JsonProperty]
    public double price { get; set; }
    [JsonProperty]
    public int estimate { get; set; }
    [JsonProperty]
    public string product_id { get; set; }
    [JsonProperty]
    public string country { get; set; }
    [JsonProperty]
    public string release_date { get; set; }
    [JsonProperty]
    public string parent_company_name { get; set; }
    [JsonProperty]
    public object unified_product_id { get; set; }

}

public class listloop : IEnumerator<List>, IEnumerable<List>
{
    [JsonProperty]
    public List<List> list { get; set; }
    int position = -1;

    public List Current
    {
        get { return list.ToArray()[position]; }
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }

    object System.Collections.IEnumerator.Current
    {
        get { return list.ToArray()[position]; }
    }


    public bool MoveNext()
    {
        position++;
        return (position < list.Count);
    }

    public void Reset()
    {
        position = 0;
    }

    public IEnumerator<List> GetEnumerator()
    {
        return ((IEnumerable<List>)this.list).GetEnumerator();
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return ((System.Collections.IEnumerable)this.list).GetEnumerator(); 
    }
}


public class RootObject : IEnumerator<listloop>, IEnumerable<listloop>
{
    [JsonProperty]
    public int code { get; set; }
    [JsonProperty]
    public string end_date { get; set; }
    [JsonProperty]
    public string vertical { get; set; }
    [JsonProperty]
    public string granularity { get; set; }
    [JsonProperty]
    public string device { get; set; }
    [JsonProperty(PropertyName="list")]
    public List<listloop> listloop { get; set; }
    [JsonProperty]
    public string start_date { get; set; }
    [JsonProperty]
    public string market { get; set; }
    private int position = -1;

    public List Current
    {
        get { return listloop.ToArray()[position].Current; }
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }

    object System.Collections.IEnumerator.Current
    {
        get { return listloop.ToArray()[position]; }
    }

    public bool MoveNext()
    {
        position++;
        return (position < listloop.Count);
    }

    public void Reset()
    {
        position = 0;
    }

    public IEnumerator<listloop> GetEnumerator()
    {
        return ((IEnumerable<listloop>)this.listloop).GetEnumerator();
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return ((System.Collections.IEnumerable)this.listloop).GetEnumerator(); 
    }

    listloop IEnumerator<listloop>.Current
    {
        get { return listloop.ToArray()[position]; }
    }
}
public class RootObjectSingle
{
    [JsonProperty]
    public RootObject rootobject { get; set; }
}
{"code": 000, "end_date": "0000-00-00", "vertical": "apps", "granularity": "daily", "device": "android", "list": [{"feed": "free", "product_device": "Android", "unified_product_name": "Pou", "product_franchise_id": null, "product_category": "Casual", "rank": 0, "parent_company_id": 0000000000000000, "publisher_name": "Zakeh", "category": "OVERALL > GAME", "company_id": 0000000000000000, "product_franchise_name": "Pou", "company_name": "Zakeh", "has_iap": true, "publisher_id": 00000000000000, "product_name": "Pou", "price": 0.0, "estimate": 00000, "product_id": "me.pou.app", "country": "BR", "release_date": "0000-00-00", "parent_company_name": "Zakeh", "unified_product_id": 0000000000000000}, {"feed": "free", "product_device": "Android", "unified_product_name": "Clumsy Bird", "product_franchise_id": null, "product_category": "Game Action", "rank": 0, "parent_company_id": 0000000000000000, "publisher_name": "Candy Mobile", "category": "OVERALL > GAME", "company_id": 0000000000000000, "product_franchise_name": "Clumsy Bird", "company_name": "Candy Mobile", "has_iap": true, "publisher_id": 00000000000000, "product_name": "Clumsy Bird", "price": 0.0, "estimate": 00000, "product_id": "com.seriouscorp.clumsybird", "country": "BR", "release_date": "0000-00-00", "parent_company_name": "Candy Mobile", "unified_product_id": 0000000000000000}, {"feed": "free", "product_device": "Android", "unified_product_name": "Subway Surfers", "product_franchise_id": null, "product_category": "Game Arcade", "rank": 0, "parent_company_id": 0000000000000000, "publisher_name": "Kiloo", "category": "OVERALL > GAME", "company_id": 0000000000000000, "product_franchise_name": "Subway Surfers", "company_name": "Kiloo", "has_iap": true, "publisher_id": 00000000000000, "product_name": "Subway Surfers", "price": 0.0, "estimate": 00000, "product_id": "com.kiloo.subwaysurf", "country": "BR", "release_date": "0000-00-00", "parent_company_name": "Kiloo", "unified_product_id": 0000000000000000}, {"feed": "free", "product_device": "Android", "unified_product_name": "My Talking Tom", "product_franchise_id": 00, "product_category": "Casual", "rank": 0, "parent_company_id": 0000000000000000, "publisher_name": "Outfit0", "category": "OVERALL > GAME", "company_id": 0000000000000000, "product_franchise_name": "Talking...", "company_name": "Outfit 0", "has_iap": true, "publisher_id": 00000000000000, "product_name": "My Talking Tom", "price": 0.0, "estimate": 00000, "product_id": "com.outfit0.mytalkingtomfree", "country": "BR", "release_date": "0000-00-00", "parent_company_name": "Outfit 0", "unified_product_id": 0000000000000000}, {"feed": "free", "product_device": "Android", "unified_product_name": "Show do Milh\u00e0o", "product_franchise_id": null, "product_category": "Casual", "rank": 0, "parent_company_id": null, "publisher_name": "LGR Mobile Apps", "category": "OVERALL > GAME", "company_id": null, "product_franchise_name": "Show do Milh\u00e0o", "company_name": "LGR Mobile Apps", "has_iap": false, "publisher_id": 00000000000000, "product_name": "Show do Milh\u00e0o 0000", "price": 0.0, "estimate": 00000, "product_id": "br.com.lgrmobile.sdm", "country": "BR", "release_date": "0000-00-00", "parent_company_name": "LGR Mobile Apps", "unified_product_id": 0000000000000000}, {"feed": "free", "product_device": "Android", "unified_product_name": "Candy Crush Saga", "product_franchise_id": null, "product_category": "Casual", "rank": 0, "parent_company_id": 0000000000000000, "publisher_name": "King.com", "category": "OVERALL > GAME", "company_id": 0000000000000000, "product_franchise_name": "Candy Crush Saga", "company_name": "King", "has_iap": true, "publisher_id": 00000000000000, "product_name": "Candy Crush Saga", "price": 0.0, "estimate": 00000, "product_id": "com.king.candycrushsaga", "country": "BR", "release_date": "0000-00-00", "parent_company_name": "King", "unified_product_id": 0000000000000000}, {"feed": "free", "product_device": "Android", "unified_product_name": "Zombie Tsunami", "product_franchise_id": null, "product_category": "Game Arcade", "rank": 0, "parent_company_id": 0000000000000000, "publisher_name": "Mobigame S.A.R.L.", "category": "OVERALL > GAME", "company_id": 0000000000000000, "product_franchise_name": "Zombie Tsunami", "company_name": "MobiGame.net", "has_iap": true, "publisher_id": 00000000000000, "product_name": "Zombie Tsunami", "price": 0.0, "estimate": 00000, "product_id": "net.mobigame.zombietsunami", "country": "BR", "release_date": "0000-00-00", "parent_company_name": "MobiGame.net", "unified_product_id": 0000000000000000},