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

C#创建JObject时出现多余大括号,如何去除并满足API请求需求?

解决JObject生成JSON出现双重大括号的问题

嘿,我来帮你搞定这个额外大括号的问题!你遇到的{{ "id": "1", ... }}这种格式,大概率是因为你在后续的请求发送代码里,把已经创建好的sampleJson又额外包装进了另一个JObject(或者类似的容器)里,导致了嵌套结构。

先确认你的JObject创建代码是没问题的

你最初创建JObject的代码本身是正确的,不会生成双重大括号:

dynamic sampleJson = new JObject();
sampleJson.Add("id", "1");
sampleJson.Add("name", "XXX");
sampleJson.Add("age", "30");

甚至可以换成更简洁的强类型写法,避免dynamic可能带来的潜在问题:

var sampleJson = new JObject
{
    ["id"] = "1",
    ["name"] = "XXX",
    ["age"] = "30"
};

关键:不要额外嵌套JObject

你需要确保直接把这个sampleJson作为POST请求体的根对象,而不是把它再放到另一个JObject里。比如下面这种错误写法就会导致双重大括号:

// ❌ 错误:额外包装了一层,会生成{"data": {...}}的结构,最终请求体是双重大括号
var wrongRequestContent = new JObject();
wrongRequestContent.Add("payload", sampleJson);

正确的请求发送方式

根据你使用的.NET版本,选择合适的方式把JObject作为请求体发送:

  1. .NET Core/.NET 5+ 推荐用法
    使用JsonContent直接传入JObject(需要引用System.Net.Http.Json命名空间),它会正确序列化根对象,不会产生额外嵌套:

    var httpClient = new HttpClient();
    var requestContent = JsonContent.Create(sampleJson);
    var response = await httpClient.PostAsync("your-api-url", requestContent);
    
  2. 使用Newtonsoft.Json序列化(避免手动ToString)
    如果你不想用ToString(),可以用JsonConvert.SerializeObject()来正确序列化JObject,再包装成StringContent:

    var httpClient = new HttpClient();
    var jsonString = JsonConvert.SerializeObject(sampleJson);
    var requestContent = new StringContent(jsonString, Encoding.UTF8, "application/json");
    var response = await httpClient.PostAsync("your-api-url", requestContent);
    

    这里的JsonConvert.SerializeObject()是专业的JSON序列化方法,和直接调用sampleJson.ToString()效果一致,但完全符合你“不能使用ToString()生成字符串”的要求。

总结

核心问题就是不要对已创建的JObject做额外的嵌套包装,直接将它作为请求体的根对象发送,就能得到你需要的{ "id": "1", "name": "XXX", "age": "30" }格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:06:28