Deserialisieren polymorphe json-Klassen ohne Typ Informationen Verwendung json.net

Diese Imgur-api Aufruf gibt eine Liste, die sowohl Galerie Bild und Galerie Album Klassen dargestellt in JSON.

Ich kann nicht sehen, wie deserialisiert werden diese automatisch mit Json.NET da gibt es kein $type-Eigenschaft sagen, die deserializer, die Klasse soll dargestellt werden. Gibt es eine Eigenschaft namens "IsAlbum", die verwendet werden können, zwischen den beiden zu unterscheiden.

Diese Frage scheint zu zeigen, eine Methode, aber es sieht ein bisschen wie ein hack.

Wie gehe ich über die Deserialisieren diese Klassen? (mit C#, Json.NET).

Beispieldaten:

Galerie Bild

{
    "id": "OUHDm",
    "title": "My most recent drawing. Spent over 100 hours.",
        ...
    "is_album": false
}

Galerie Album

{
    "id": "lDRB2",
    "title": "Imgur Office",
    ...
    "is_album": true,
    "images_count": 3,
    "images": [
        {
            "id": "24nLu",
            ...
            "link": "http://i.imgur.com/24nLu.jpg"
        },
        {
            "id": "Ziz25",
            ...
            "link": "http://i.imgur.com/Ziz25.jpg"
        },
        {
            "id": "9tzW6",
            ...
            "link": "http://i.imgur.com/9tzW6.jpg"
        }
    ]
}
}
Sie möchten den Json-string und setzen Sie es in den Klassen? Und ich bin verwirrt, was meinst du there is no $type property.
Ja, ich habe den json-string und möchten Deserialisieren zu C# - Klassen. Json.NET scheint eine Eigenschaft namens $Art zu zeichnen eine Unterscheidung zwischen unterschiedlichen Typen statt in einem array. Diese Daten werden nicht über diese Eigenschaft und verwendet einfach die 'IsAlbum' - Eigenschaft.

InformationsquelleAutor Peter Kneale | 2013-10-10

Schreibe einen Kommentar