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

.NET Core 6 GET请求使用Newtonsoft.Json返回JSON空响应体问题

.NET 6.0 GET请求Newtonsoft.Json返回异常解决方案

问题表现

.NET 6.0 C#项目开发GET接口,引入Newtonsoft.Json处理JSON序列化时,两种常规返回写法均不符合预期:

  • 直接向Results.Json传入JObject实例,接口返回空响应体
  • 向Results.Json传入JObject序列化生成的字符串,返回内容的换行位置会被自动添加\r\n转义字符,格式错误

根因分析

  • .NET 6 内置的Results.Json方法默认序列化器为System.Text.Json,该序列化器无法正确识别处理Newtonsoft.Json的JObject类型,序列化后无内容输出。
  • 传入已完成序列化的JSON字符串调用Results.Json时,内置序列化器会将输入值识别为普通字符串做二次转义,原有JSON结构的引号、换行符都会被加上转义前缀,无法作为标准JSON响应被前端解析。

正确实现

using NetMQ;
using NetMQ.Sockets;
using Newtonsoft.Json.Linq;
using System.Text;

static JObject j_tmp = new JObject();

private static async Task<IResult> Command1()
{
   j_tmp["test"] = "1234";
   j_tmp["number"] = 18;
   // 直接输出序列化完成的JSON内容,指定正确的响应Content-Type
   return Results.Content(j_tmp.ToString(Newtonsoft.Json.Formatting.None), "application/json; charset=utf-8");
}

方案说明

Results.Content方法会直接将传入的字符串写入响应流,不会触发内置序列化逻辑。传入Formatting.None生成无缩进、无多余换行的紧凑JSON字符串,同时手动指定application/json的响应类型和UTF-8编码,即可返回符合预期的JSON结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:31:13