如何反序列化GraphQL变更操作后的响应结果
正确实现GraphQL变更响应的反序列化
响应示例
你的GraphQL变更返回的JSON结构如下:
{ "carCreate": { "car": { "id": "TestId" } } }
问题分析
当前直接将CarCreate作为SendMutationAsync的泛型参数,无法匹配JSON的顶层结构——JSON最外层是carCreate字段,需要一个顶层模型来承载这个字段,才能正确完成反序列化。
解决方案
- 补充顶层响应模型
添加一个对应整个JSON结构的顶层类,确保字段名与JSON中的carCreate完全匹配:
using Newtonsoft.Json; public class Car { public string Id { get; set; } } public class CarCreate { public Car Car { get; set; } } // 新增顶层响应模型,对应JSON最外层结构 public class CarCreateResponse { [JsonProperty("carCreate")] public CarCreate CarCreate { get; set; } }
注:如果你的序列化器已配置为驼峰命名约定(Newtonsoft.Json默认支持),
JsonProperty特性可以省略,但显式声明能避免命名策略变化带来的适配问题。
- 调整调用代码
将SendMutationAsync的泛型参数改为顶层模型CarCreateResponse,再逐层获取目标对象:
var graphQlClient = new GraphQLHttpClient(AppConfig.GraphQlUrl, new NewtonsoftJsonSerializer()); var response = await graphQlClient.SendMutationAsync<CarCreateResponse>(request); // 获取反序列化后的Car实例 var createdCar = response.Data?.CarCreate?.Car;
内容的提问来源于stack exchange,提问作者Wasif Mustahid
相关产品推荐
相关产品推荐

