2017-02-01 2 views
1

Я использую Newtonsoft для десериализации данных JSON для объекта.C# Newtonsoft JSON свойство карты для элемента массива

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

Я знаю, что могу отметить свойство LoanItem с атрибутом JSONProperty, но мне интересно, если есть способ, я могу добавить вспомогательный элемент массива с условием.

Что-то, может быть, как

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

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

Возможно ли это? Можно ли использовать атрибут JSONProperty?

+2

Нет, это не то, как это работает. –

+0

@JeffMercado, так что мне просто нужно вручную разобрать JSON и сопоставить мои объекты? – James

+0

Вы говорите, что это плохо. «JsonPropertyAttribute» не предназначен для того, чтобы делать то, что вам нужно. Это способ сопоставить простое свойство json с свойством .net. То, что вы предлагаете, намного сложнее, чем любой из API. Если вам нужна более сложная логика, вы должны быть тем, кто ее предоставляет. –

ответ

2

создать новый класс Borrower

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

Update класс ваш 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

+0

Спасибо, я так много думал о том, как использовать атрибут JSONProperty, который я даже не рассматривал простое решение. – James

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