2016-12-14 4 views
0

Я пытаюсь десериализовать полезную нагрузку JSON, которая по причинам, находящимся за пределами моего контроля, содержит свойство (то есть член), названное так же, как и его имя класса. Что-то вроде:Имя пользователя совпадает с классом во время десериализации JSON

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

Когда я вывести класс из этой полезной нагрузки, мне нужно что-то вроде этого:

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

Очевидно, что компилятор жалуется: имена членов не могут быть таким же, как ограждающий типа

Как я могу переименовать элемент (или класс для этого эффекта), поэтому Json.NET (библиотека, которую я использую для упрощения) может «гидратировать» полезную нагрузку, просто позвонив JsonConvert.DeserializeObject<T>?

ответ

2

Используйте другое имя для собственности, и дать подсказку Json.NET как десериализации этого имущества ...

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

Используйте атрибут JsonProperty, который позволяет указать имя источника собственности, а отображение в свойство назначения другого имени.

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

Downvoter, Я буду признателен за ваши отзывы. –

Смежные вопросы