RestSharp и List‹T› десортируют

Привет и спасибо за этот замечательный инструмент!

У меня есть ответ JSON, который возвращает некоторые «папки» для «учетной записи». Я использовал http://json2csharp.com/ для создания классов для сериализации результатов. Классы ниже этого JSON.

Короче говоря, проблема заключается в том, что возвращаются правильные папки и массив создается, однако переменные-члены элементов массива (папки) никогда не инициализируются.

{
    "name": "SEResponse",
    "declaredType": "com.sesac.api.view.FolderList",
    "scope": "javax.xml.bind.JAXBElement$GlobalScope",
    "value": {
        "link": [],
        "TotalRecords": 9,
        "Folders": [
            {
                "Folder": {
                    "folderId": 1,
                    "accountId": 1,
                    "name": "root",
                    "isRoot": true,
                    "parentId": 0,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            },
            {
                "Folder": {
                    "folderId": 9,
                    "accountId": 1,
                    "name": "m4",
                    "isRoot": false,
                    "parentId": 1,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            },
            {
                "Folder": {
                    "folderId": 2,
                    "accountId": 1,
                    "name": "c1",
                    "isRoot": false,
                    "parentId": 1,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            },
            {
                "Folder": {
                    "folderId": 3,
                    "accountId": 1,
                    "name": "c2",
                    "isRoot": false,
                    "parentId": 1,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            },
            {
                "Folder": {
                    "folderId": 4,
                    "accountId": 1,
                    "name": "cc2",
                    "isRoot": false,
                    "parentId": 3,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            },
            {
                "Folder": {
                    "folderId": 5,
                    "accountId": 1,
                    "name": "dd2",
                    "isRoot": false,
                    "parentId": 3,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            },
            {
                "Folder": {
                    "folderId": 10,
                    "accountId": 1,
                    "name": "z4",
                    "isRoot": false,
                    "parentId": 1,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            },
            {
                "Folder": {
                    "folderId": 6,
                    "accountId": 1,
                    "name": "z2",
                    "isRoot": false,
                    "parentId": 1,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            },
            {
                "Folder": {
                    "folderId": 7,
                    "accountId": 1,
                    "name": "j4",
                    "isRoot": false,
                    "parentId": 1,
                    "parentName": null,
                    "creationDate": null,
                    "lastModifiedDate": null,
                    "fbFolderId": null,
                    "fbParentId": null
                }
            }
        ]
    },
    "nil": false,
    "globalScope": true,
    "typeSubstituted": false
}

и вот мои классы:

public class Folder
{
    public int folderId { get; set; }
    public int accountId { get; set; }
    public string name { get; set; }
    public bool isRoot { get; set; }
    public int parentId { get; set; }
    public object parentName { get; set; }
    public object creationDate { get; set; }
    public object lastModifiedDate { get; set; }
    public object fbFolderId { get; set; }
    public object fbParentId { get; set; }
}


public class FolderList
{
    public List<object> link { get; set; }
    public int TotalRecords { get; set; }
    public List<Folder> Folders { get; set; }
}


public class RootFolderObject
{
    public string name { get; set; }
    public string declaredType { get; set; }
    public string scope { get; set; }
    public FolderList value { get; set; }
    public bool nil { get; set; }
    public bool globalScope { get; set; }
    public bool typeSubstituted { get; set; }
}

person user486480    schedule 31.01.2013    source источник


Ответы (2)


все ваши неинициализированные объекты имеют тип объекта. Мне кажется, что вам нужно использовать более подходящий/конкретный тип объекта, чтобы включить правильную де/сериализацию. Пример: используйте DateTime для метки времени и т. д.

person smertrios    schedule 31.01.2013

Ага, тип "объект" - проблема (и для папки, и для ссылки).

Интересно, почему вы получаете «Папка» в JSON. Я бы ожидал:

"Folders": [
            {
                    "folderId": 1,
                    "accountId": 1,
                    "name": "root",
                    ...
            },
            ...
]

Использование вашего JSON RestSharp, вероятно, будет искать члена с именем «Папка».

person Kwel    schedule 28.02.2013