You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2019调试C# Azure Function时POST请求JSON无法反序列化

问题原因

  • 核心问题出在你定义的AppInfo类的成员类型:AppName和UserGuid是公共字段,而非公共属性。你使用的Newtonsoft.Json(JsonConvert所属库)默认仅对公共属性执行序列化/反序列化操作,公共字段不会被自动映射,所以反序列化后两个字段始终保持初始化的空字符串值。
  • 附加排查点:可在反序列化代码前打断点,确认requestBody变量的内容为符合预期的JSON结构,排除格式错误、键名拼写错误等基础问题。

解决方案

方案1(推荐):将AppInfo的字段改为公共属性

直接给成员加上{ get; set; }定义,符合C#类设计规范,也兼容Json.NET的默认反序列化规则:

public class AppInfo
{
    public string AppName { get; set; } = "";
    public string UserGuid { get; set; } = "";
}

方案2:保留字段,添加序列化特性

如果你需要保留字段的定义形式,可以给字段添加[JsonProperty]特性,显式告知Json.NET需要序列化/反序列化该字段:

using Newtonsoft.Json;

public class AppInfo
{
    [JsonProperty]
    public string AppName = "";
    [JsonProperty]
    public string UserGuid = "";
}

方案3:修改序列化配置适配字段映射

如果项目中大量使用字段需要序列化,可以在反序列化时传入自定义配置,让Json.NET支持公共字段的映射:

var data = JsonConvert.DeserializeObject<AppInfo>(requestBody, new JsonSerializerSettings
{
    ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver
    {
        DefaultMembersSearchFlags = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance
    }
});

内容的提问来源于stack exchange,提问作者Matt Small

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:45:07