ASP.NET Core控制器如何将字符串返回值格式化为合法JSON?
解决ASP.NET Core控制器字符串返回值自动序列化为JSON的问题
你可以通过以下几种方式让字符串返回值以JSON格式输出(Content-Type为application/json):
方法一:返回JsonResult
这是最简便的实现方式,直接用框架提供的Json()方法包裹字符串:
[HttpPost] [Route("[action]")] public JsonResult GetString() { return Json("abc"); }
这种写法会自动把字符串序列化为带双引号的JSON格式,响应头的Content-Type也会被设置为application/json。
方法二:包装成非原始类型
利用框架对复杂类型自动JSON序列化的特性,把字符串包装成匿名对象或自定义类:
[HttpPost] [Route("[action]")] public object GetString() { return new { Value = "abc" }; }
返回结果会是{"Value":"abc"},完全符合JSON格式规范。
方法三:手动构建ContentResult
如果需要更精细地控制响应内容,可以手动创建ContentResult,指定正确的Content-Type并格式化字符串:
[HttpPost] [Route("[action]")] public ContentResult GetString() { return new ContentResult { Content = "\"abc\"", // 手动添加JSON字符串要求的双引号 ContentType = "application/json", StatusCode = StatusCodes.Status200OK }; }
补充说明
ASP.NET Core默认对string这类原始类型使用StringOutputFormatter处理,输出text/plain格式;而复杂类型则会触发JSON格式化器(如SystemTextJsonOutputFormatter)处理,这就是非原始类型能自动返回JSON的原因。
内容的提问来源于stack exchange,提问作者Wolf Donner
相关产品推荐
相关产品推荐

