2016-04-13 7 views
0

У меня есть возврат JSON, как показано ниже.Deserialize Json с минусом в названии свойства

{ 
    "id": 100, 
    "name": "employer 100", 
    "externalId": "100-100", 
    "networkId": 1000, 
    "address": { 
     "street-address": "1230 Main Street", 
     "locality": "Vancouver", 
     "postal-code": "V6B 5N2", 
     "region": "BC", 
     "country-name": "CA" 
    } 
    } 

Поэтому я создал класс для десериализации вышеперечисленного json.

public class Employer 
     { 
      public int id { get; set; } 
      public string name { get; set; } 
      public string externalId { get; set; } 
      public int networkId { get; set; } 
      public Address address { get; set; } 
     } 
    public class Address 
     { 
      public string street_address { get; set; } 
      public string locality { get; set; } 
      public string postal_code { get; set; } 
      public string region { get; set; } 
      public string country_name { get; set; } 
     } 
var response = _client.Execute(req); 
return _jsonDeserializer.Deserialize <Employer> (response); 

Но я не мог получить улица-адрес, почтовый код и страна-имя из Json строки. Я думаю, из-за выходных ключей Json есть «» - «" (В результате я получаю null).

Так как я могу решить свою проблему?

+0

Какие библиотеки вы используете для десериализации? – Eser

+0

Im using RestSharpe –

+0

Обновлен мой ответ для RestSharp – JimBobBennett

ответ

2

Используйте атрибут DeserializeAs на свойствах:

[DeserializeAs(Name = "postal-code")] 
public string postal_code { get; set; } 

Это позволяет установить тот же свойства в формате JSON, отображающей свойству в своем классе, что позволяет свойство иметь другое имя сын.

https://github.com/restsharp/RestSharp/wiki/Deserialization

+0

, если OP использует JsonNet – Eser

+0

Я принимаю на основе JsonDeserializer.Deserialize, что они есть, но я должен уточнить. Будет редактировать. – JimBobBennett

+0

И именно этот код заставляет меня думать, что это может быть другая библиотека, такая как RestSharp. – Eser

0

Если вы используете Json.NET, использование атрибутов свойствах указать имена, которые они должны соответствовать до:

public class Employer 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string externalId { get; set; } 
    public int networkId { get; set; } 
    public Address address { get; set; } 
} 
public class Address 
{ 

    [JsonProperty("street-address")] 
    public string street_address { get; set; } 
    public string locality { get; set; } 
    [JsonProperty("postal-code")] 
    public string postal_code { get; set; } 
    public string region { get; set; } 
    [JsonProperty("country-name")] 
    public string country_name { get; set; } 
} 
+0

Я не думаю, что это будет работать, поэтому уличный адрес, как street_address –

+0

@GayanJ Легко решить, просто измените строку в кавычках. Я обновил свой ответ, чтобы отразить изменение, чтобы использовать тире вместо подчеркивания. – Xaniff

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

  • Нет связанных вопросов^_^