2016-08-07 6 views
0

非標準Jsonフィールドと思われるデータ変換オブジェクトクラスを作成するにはどうすればよいですか?具体的に非標準JsonフィールドのDTOの作成

私はRackspace Cloud Identity documentationで探していますと、このセクションがあります:

"token": 
    { 
    "RAX-AUTH:authenticatedBy": [ 
     "PASSWORD" 
      ], 
    "expires": "2014-01-09T15:08:53.645-06:00", 
    "id": "123abc53689b12357897898" 
    } 

は、私は次のようなものを持っているでしょう、私のDTOクラスのエントリを作成するには:

一体にするにはどうすればよい
public class token 
{ 
    public DateTime expires { get; set; } 
    public string id { get; set; } 
} 

私はシリアル化ハンドラが正しく理解してマップできるように、JsonデータフィールドRAX-AUTH:authenticatedByを表しますか?

UPDATE:

私の元の質問には回答をシリアル化のためだったが、私は私の大きな問題は、リクエストDTOデシリアライゼーションである実現:私は勧告をテストしてみたが、アウトバウンドのJSONがあり

{ 
    "auth": { 
     "RAX-AUTH:domain": { 
      "name":"Rackspace" 
     }, 
     "passwordCredentials": { 
      "username":"<USERNAME>", 
      "password":"<PASSWORD>" 
     } 
    } 
} 

」ドメイン」ではなく 『RAX-AUTH:APIのようなドメインは、』期待している:

[DataContract(Name="auth")] 
public class CloudIdentityAuthRequest 
{ 
    [DataMember] 
    [JsonProperty("RAX-AUTH:domain")] 
    public CloudIdentityDomain domain { get; } 

    [DataMember] 
    public CloudIdentityPasswordCredentials passwordCredentials { get; } 
} 

[DataContract] 
public class CloudIdentityDomain 
{ 
    [DataMember] 
    public string name { get { return "Rackspace"; } } 
} 
+0

実際にシリアライズ/リクエストの送信を行っているコードをお知らせください。使用しているJSONシリアライズ機能が何であるかわかりません。 – JLRishe

+0

Json.NETで使用できるDTOクラスの作成について質問しています... Rackspace API Authリクエスト/レスポンスには、この特定のフィールド「RAX-AUTH:domain」と「RAX-AUTH:authenticatedBy」があります。問題。 – Dscoduc

答えて

0

そのフィールドは、文字列の配列であるように見えます。あなたはDataMember属性を使用して、DTOのプロパティにその名をマッピングすることができます

[DataContract] 
public class Token 
{ 
    [DataMember(Name = "RAX-AUTH:authenticatedBy")] 
    public string[] AuthenticatedBy { get; set; } 
    [DataMember(Name = "expires")] 
    public DateTime Expires { get; set; } 
    [DataMember(Name = "id")] 
    public string Id { get; set; } 
} 
+0

私はDataMemberの名前を付けてみましたが、成功していませんでした。また、他の誰かがあなたの例を試している場合は、[DataMember(Name = "...") – Dscoduc

+0

の修正があります。修正しました。ありがとうございます。 – user1620220

0

あなたはJson.NETを使用することができます(NuGETからダウンロード)し、あなたが次にこの

public class Token 
{ 
    public DateTime expires { get; set; } 
    public string id { get; set; } 
    [JsonProperty("RAX-AUTH:authenticatedBy")] 
    public IEnumerable<string> authenticatedBy { get; set; } 
} 

ような何かをすることができます行うことができますプロパティは常に文字列の配列になりますし、あなたのシリアライザに応じて、あなたがこれを行うことができるはずと仮定すると

var rackSpaceAuth = JsonConvert.DeserializeObject<Token>(tokenjson); 
+1

そのプロパティは文字列ではありません。 – JLRishe

+0

@JLRishe、はい、編集しました。 – Rahul

+0

あなたが与えた例が私のために働いていないように私の更新された質問を見てください... – Dscoduc

0

のようにそれをデシリアライズ:

public class token 
{ 
    public DateTime expires { get; set; } 

    public string id { get; set; } 

    [JsonProperty("RAX-AUTH:authenticatedBy")] 
    public string[] authenticatedBy { get; set; } 
} 
+0

あなたが与えた例が私のために働いていないように私の更新された質問を見てください... – Dscoduc

関連する問題