【问题标题】:JsonConvert.DeserializeObject<> is returning null last childtoken of the two childrentokensJsonConvert.DeserializeObject<> 正在返回 null 两个子令牌的最后一个子令牌
【发布时间】:2020-06-22 09:30:53
【问题描述】:

我正在从前端向我的 API 发送一个 JObject,它分为 First 和 Last childtokens,如下图所示:

但是,当我尝试使用以下代码时,childrendtoken 的最后一部分变为空

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

这是我在调试模式下所拥有的:

这里,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”模型类的每个属性上,但遇到了同样的“空”问题。

我不确定我在这里做错了什么,您对此的建议将非常有帮助。

【问题讨论】:

  • receiveVoucherReceiveAmount 不同...
  • 如果您可以将整个请求 json 作为文本发布在您的问题中,将会很有帮助。我最初看到的一件事是,当您的类将其定义为 Nullable. 时,您正在为 ReceivedAmount 传递一个字符串

标签: asp.net json api jsonconverter


【解决方案1】:

您的 JSON 属性名称不匹配。您的班级使用receiveVoucher,而JSON 是ReceiveAmount。另外,你为什么首先使用JObject,这应该只使用类名作为动作参数:

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

【讨论】:

  • 谢谢 DavidG,你是救命稻草,但是,从现在开始,在这种情况下,我会使用类名作为参数。
猜你喜欢
  • 2017-04-13
  • 2021-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多