2016-03-23 2 views
2

Je cette JSON (en fait Swagger):Placer les noms des membres de données non définies dans Diction générique <string, object> lors de l'analyse JSON

{ 
    "swagger": "2.0", 
    "info": { 
    "version": "2.0", 
    "name": "TheName", 
    "description": "No description" 
    } 
    "somethingElse" : "xyz" 
} 

J'utilise Newtonsoft.JSON. Je définissais mon objet:

public class WebService 
{ 
    public string swagger; 
    public Dictionary<string, object> AllOthers; 
} 

Comme vous pouvez le voir, je ne l'ai pas défini « info » ou objets « somethingElse » en tant que membres. Au contraire, je veux que cela se place dans le dictionnaire AllOthers générique

Quand j'appelle

var ws = Newtonsoft.Json.JsonConvert.DeserializeObject<WebService>(swaggerJSON); 

ws contiendra désormais correctement la chaîne de numéro de version de fanfaronnades, mais AllOthers Contiendra nulle. Je veux que AllOthers contienne un nom pour le nom et la description, et que les données utiles soient stockées dans un objet générique.

Comment cela est-il réalisé, ou peut-il être difficile?

Merci

Répondre

2

Il est un attribut pour cette [JsonExtensionData]. Marquer votre dictionnaire avec cet attribut:

public class WebService 
{ 
    public string swagger; 
    [JsonExtensionData] 
    public Dictionary<string, object> AllOthers; 
} 

var ws = Newtonsoft.Json.JsonConvert.DeserializeObject<WebService>(json); 

J'espère que cela aide! à votre santé.

+0

figuré qu'il pourrait être atteint grâce à un attribut - il s'avère qu'il est. Merci :) – Prof