2017-02-01 9 views
1

私はNewtonsoftを使ってJSONデータをオブジェクトに逆シリアル化しています。C#Newtonsoft JSONマッププロパティから配列サブアイテム

私のJSONは、次のようになります。

{ 
    "id": "4aa50d01-41bd-45e3-803e-f479a948acf1", 
    "referenceNumber": "120064", 
    "status": "Application in Progress", 
    "borrowers": [ 
    { 
     "name": "John Doe", 
     "type": "BORROWER" 
    }, 
    { 
     "name": "Jane Doe", 
     "type": "COBORROWER" 
    } 
    ], 
    "propertyAddress": { 
     "zipCodePlusFour": "" 
    } 
} 

借り手の配列には、最大2つの項目を持つことができます。 1はtype == "BORROWER"で、もう1つはtype == "COBORROWER"

私はデシリアライズしているLoanItemクラスを持っています。

public class LoanItem 
{ 
    public string referenceNumber { get; set; } 
    public string status { get; set; } 
} 

私はJSONProperty属性でLoanItemプロパティをマークすることができます知っているが、私は条件で、配列のサブ項目を追加することができます方法がある場合、私は思ったんだけど。多分

[JSONProperty("borrowers[WHERE type = 'BORROWER'].name")] 
public string BorrowerName { get; set; } 

[JSONProperty("borrowers[WHERE type = 'COBORROWER'].name")] 
public string CoBorrowerName { get; set; } 

よう

何かが、これは可能ですか? JSONProperty属性を使用できますか?

+2

ハズレにアクセスすることができ、この

public class LoanItem { public string referenceNumber { get; set; } public string status { get; set; } public List<Borrower> Borrowers {get;set;} public string BorrowerName { get { return Borrowers.Where(x=>x.Type == "BORROWER").FirstOrDefault().Name; } public string CoBorrowerName { get { return return Borrowers.Where(x=>x.Type == "COBORROWER").FirstOrDefault().Name; } } } 

にごLoanItemクラスを更新しBorrower

public class Borrower { string Name { get; set; } string Type { get; set; } } 

新しいクラスを作成します。 –

+0

@JeffMercadoだから、JSONを手作業で解析してオブジェクトにマップするだけでいいですか? – James

+0

あなたはそれが悪いことのように聞こえるようにします。 'JsonPropertyAttribute'はあなたがそのようにしたいことをするようには設計されていません。単純なjsonプロパティを.netプロパティにマップする方法です。あなたが提案しているものは、提供されているAPIよりはるかに複雑です。より複雑なロジックが必要な場合は、それを提供するロジックにする必要があります。 –

答えて

2

今、あなたはそれはそれがどのように動作するかではありません、BorrowerNameとCoborrowerName

+0

JSONProperty属性をどのように使用できるかについて、私は単純な解決法を考慮しなくても大したことを考えていました。 – James

関連する問題