JsonConvert.DeserializeObject <> возвращает нулевой последний дочерний токен двух дочерних токенов - PullRequest
0 голосов
/ 10 марта 2020

Я отправляю объект JO из внешнего интерфейса в мой API, который разделен на первый и последний дочерние токены, как показано на рисунке ниже:

The sample JObject request

Однако, когда я пытаюсь использовать следующий код, последняя часть childrendtoken становится пустой

var RVoucher = JsonConvert.DeserializeObject<VMReceive>(request.ToString());

Это то, что у меня в режиме отладки:

The last child is null

Здесь VMReceive представляет собой модель представления, которая состоит из другой модели представления "VMMonth" и созданного ado. net класса модели "ReceiveVoucher". Код моделей приведен ниже:

public class VMReceive
{
    public List<VMMonth> Month { get; set; }
    public ReceiveVoucher receiveVoucher { get; set; }
}

public class VMMonth
{
    public int item_id { get; set; }
    public string item_text { get; set; }
}

public partial class ReceiveVoucher
{
    public int ReceiveVoucherId { get; set; }
    public Nullable<int> MonthId { get; set; }
    public string ReceivedBy { get; set; }
    public string Remarks { get; set; }
    public Nullable<int> ReceivedAmount { get; set; }
}

Я также пытался поместить [JsonProperty ("")] над каждым свойством моего класса модели ReceiveVoucher, но получил ту же проблему "null".

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

1 Ответ

1 голос
/ 10 марта 2020

Ваше JSON имя свойства не совпадает. Ваш класс использует receiveVoucher, тогда как JSON - ReceiveAmount. Кроме того, почему вы используете JObject в первую очередь, это должно работать, просто используя имя класса в качестве параметра действия:

public HttpResponse PostReceive([FromBody] VMReceive RVoucher, int userId)
{
    ...
}
...