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

C#使用RestSharp时如何正确序列化JSON为字符串发起POST请求

问题根源

你C#版本调用失败的核心原因是AddBody方法的默认序列化逻辑:当你传入手动拼接好的JSON字符串时,RestSharp会把这个字符串当成普通的CLR对象再次执行JSON序列化,最终发出去的请求体是带转义、被外层引号包裹的字符串,根本不是Python中json.dumps生成的原生JSON数组,和服务端预期的负载格式完全不匹配。

推荐实现方案

和Pythonjson.dumps效果完全一致的最简洁写法有两种,优先选第一种:

方案1:结构化对象自动序列化(官方推荐,零转义错误)

和Python里先构造list/dict结构化数据再序列化的逻辑完全一致,不需要手动拼JSON字符串,RestSharp会自动完成序列化,输出格式和json.dumps结果完全对齐:

var client = new RestClient(someUrl);
var request = new RestRequest(Method.Post);

// 配置Cookie、请求头
request.AddCookie("cookie", theCookies);
request.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0");
request.AddHeader("Accept", "application/json, text/plain, */*");
request.AddHeader("Accept-Language", "en-US,en;q=0.5");
request.AddHeader("Accept-Encoding", "gzip, deflate, br");

// 构造和Python端完全一致的结构化数据,不用管转义
var requestPayload = new List<object>
{
    new { parameterName = "date", values = new [] { "-30d" } },
    new { parameterName = "category", values = new [] { "25", "4", "2" } },
    new { parameterName = "format", values = new [] { "pdf" } },
    new { parameterName = "readunread", values = new [] { "read" } }
};

// 自动按JSON格式序列化负载,等价于Python的json.dumps(data)
request.AddJsonBody(requestPayload);

var response = client.Execute(request);

注意:AddJsonBody会自动添加Content-Type: application/json请求头,不需要手动重复添加;另外不要手动设置Host头,RestSharp会根据目标地址自动填充,手动赋值反而可能触发校验错误。

方案2:直接传入预序列化的JSON字符串

如果你已经提前拿到了序列化完成的JSON字符串,不想再构造对象,就用AddStringBody替代AddBody,明确指定内容格式,避免二次序列化:

string preSerializedJson = "[{\"parameterName\":\"category\",\"values\":[\"25\",\"4\",\"2\"]},{\"parameterName\":\"format\",\"values\":[\"pdf\"]},{\"parameterName\":\"date\",\"values\":[\"-30d\"]},{\"parameterName\":\"readunread\",\"values\":[\"read\"]}]";
// 直接发送原始JSON字符串,不做额外序列化处理
request.AddStringBody(preSerializedJson, DataFormat.Json);

这种写法发出去的请求体和Python端json.dumps生成的字符串完全一致,不会做任何额外转义或包装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:12:28