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

如何在C#中映射含JSON数组属性的GraphQL响应

问题分析与解决方案

错误原因

你的C#类结构和GraphQL返回的JSON响应层级不匹配:

  • JSON中allFilms下的films是数组类型(由[]包裹),但你定义的allFilms类里,把films映射成了自定义的films类,而这个类又嵌套了film列表,导致序列化器试图将JSON数组转换为对象,从而抛出类型不匹配的错误。

修正后的C#类

调整类结构,让它和JSON的层级完全对应:

public class GraphQLFilmResponse
{
    public Data Data { get; set; }
}

public class Data
{
    public AllFilms AllFilms { get; set; }
}

public class AllFilms
{
    public List<Film> Films { get; set; }
}

public class Film
{
    public string Title { get; set; }
    public DateTime? ReleaseDate { get; set; }
}

补充说明

  1. 按照C#命名规范,类名和属性名采用帕斯卡命名法(首字母大写)。如果你的序列化器(如Newtonsoft.Json或System.Text.Json)默认无法匹配JSON里的小写键,可以通过特性指定映射关系:
    示例(System.Text.Json):
    public class Data
    {
        [JsonPropertyName("allFilms")]
        public AllFilms AllFilms { get; set; }
    }
    
  2. 确保序列化器配置支持日期格式转换,JSON中的releaseDate是字符串格式,需要能正确解析为DateTime?类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:02:20