2016-12-14 4 views
0

J'essaie de désérialiser une charge JSON qui, pour des raisons indépendantes de mon contrôle, contient une propriété (un membre) nommée exactement comme son nom de classe. Quelque chose comme:Le nom du membre est le même que celui de la désérialisation JSON

{ 
    ..., 
    "Id": { 
     "A" : "Hello", 
     "B" : "World", 
     ... 
     "Id" : 1 
    }, 
    ... 
} 

Quand je dérivez une classe de cette charge, je besoin de quelque chose comme ceci:

class Id{ 
    public string A, B; 
    public int Id; 
} 

De toute évidence, le compilateur se plaint avec: noms de membres ne peuvent pas être les mêmes que enfermant le type

Comment puis-je renommer le membre (ou la classe pour cet effet), alors Json.NET (la bibliothèque que j'utilise pour le créer plus facilement) est capable "d'hydrater" les charges en appelant simplement JsonConvert.DeserializeObject<T>?

Répondre

2

Utilisez un autre nom pour la propriété, et donner un indice à Json.NET comment désérialiser cette propriété ...

public class Id 
{ 
    public string A {get; set;} 
    public string B {get; set;} 
    [JsonProperty("Id")] 
    public int IdProp; 
} 
0

Utilisez l'attribut JsonProperty qui vous permet de spécifier le nom du tout de propriété source mappage vers une propriété de destination d'un nom différent.

public class Id 
{ 
    public string A { get; set; } 
    public string B { get; set; } 
    [JsonProperty("Id")] 
    public int ExtId { get; set; } 
} 
+0

Downvoter, J'apprécierais vos commentaires. –