C#Newtonsoft JSON映射属性到数组子项

时间:2017-02-01 04:14:04

标签: c# json.net

我正在使用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",另一代代表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属性吗?

1 个答案:

答案 0 :(得分:2)

创建新课程Borrower

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

将您的LoanItem类更新为此

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; } }
}

现在您可以访问BorrowerName和CoborrowerName