2016-04-13 6 views
0

私は以下のJSONリターンを持っています。プロパティ名にマイナスの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

私はRestSharpeを使用しています –

+0

OPがJsonNetを使用する場合、RestSharp – JimBobBennett

答えて

2

あなたの特性に属性DeserializeAsを使用します。

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

これは、プロパティがに別の名前を持つことができるように、あなたはあなたのクラスのプロパティにマップするJSON内のプロパティのと同じに設定することができます息子。

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

+0

の回答が更新されました – 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

関連する問題