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

RestSharp中AddJsonBody无法序列化对象列表?求正确方案

RestSharp 106.15.0 中 AddJsonBody 调用后请求体为 null 的解决方案

正确实现方式

在RestSharp 106.15.0版本中,List<object>类型的集合会导致内置JSON序列化器无法正确识别匿名类型结构,从而出现请求体为null的情况。你可以通过以下两种方式修复:

  1. 使用匿名类型数组替代List
    var data = new[]
    {
        new { Name = "a", Age = 1 },
        new { Name = "a", Age = 1 },
    };
    
    var request = new RestRequest();
    request.AddJsonBody(data);
    
    1. 使用List存储匿名类型
    var data = new List<dynamic>()
    {
        new { Name = "a", Age = 1 },
        new { Name = "a", Age = 1 },
    };
    
    var request = new RestRequest();
    request.AddJsonBody(data);
    

    替代方案

    如果坚持使用List<object>,可以手动序列化JSON字符串后提交:

    方式一:使用Newtonsoft.Json序列化

    using Newtonsoft.Json;
    
    var data = new List<object>()
    {
        new { Name = "a", Age = 1 },
        new { Name = "a", Age = 1 },
    };
    
    var jsonStr = JsonConvert.SerializeObject(data);
    var request = new RestRequest();
    request.AddParameter("application/json", jsonStr, ParameterType.RequestBody);
    

    方式二:使用RestSharp内置序列化器

    var data = new List<object>()
    {
        new { Name = "a", Age = 1 },
        new { Name = "a", Age = 1 },
    };
    
    var serializer = new RestSharp.Serializers.JsonSerializer();
    var jsonStr = serializer.Serialize(data);
    var request = new RestRequest();
    request.AddParameter("application/json", jsonStr, ParameterType.RequestBody);
    

    是否必须手动序列化?

    不是必须。只有当你使用List<object>这种无法让序列化器识别具体类型的集合时,才需要手动序列化。只要改用能保留匿名类型结构的集合(如匿名数组、List<dynamic>),就可以正常使用AddJsonBody方法自动处理序列化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:01:07