La désérialisation polymorphes json classes sans informations de type à l'aide de json.net

Ce Imgur api appel renvoie une liste contenant les deux Image de la Galerie et Galerie Album classes représentées en JSON.

Je ne vois pas comment désérialiser automatiquement à l'aide de ces Json.NET étant donné qu'il n'y a pas de $type de propriété dire la deserializer la classe est destinée à être représentés. Il y a une propriété appelée "IsAlbum" qui peut être utilisée pour distinguer entre les deux.

Cette question semble montrer une méthode, mais on dirait un peu un hack.

Comment puis-je aller sur la désérialisation de ces classes? (à l'aide de C#, Json.NET).

Des Données De L'Échantillon:

Image De La Galerie

{
    "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"
        }
    ]
}
}
  • Vous voulez prendre de la chaîne Json et le mettre dans des classes? Et je suis confus par ce que vous entendez par there is no $type property.
  • Oui, j'ai de la chaîne json et souhaitez désérialiser de classes C#. Json.NET semble utiliser une propriété appelée $type d'établir une distinction entre les différents types de détenus dans un tableau. Ces données n'ont pas cette propriété et utilise juste le 'IsAlbum la propriété.
InformationsquelleAutor Peter Kneale | 2013-10-10