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

ASP.NET Core Web API:ContentResult返回JSON时自动去重属性的控制方法

问题

在我的Web API中,我通过以下方式使用ContentResult返回包含JSON数据的字符串:

return Content(jsonString, "application/json");

但奇怪的是,它会自动移除JSON中的重复属性。例如,当我尝试返回如下JSON字符串时:

{
    "id": 1840,
    "action_checklist_id": 145,
    "id": 6891,
    "categories_id": 1
}

实际得到的结果是:

{
    "id": 6891,
    "action_checklist_id": 145,
    "categories_id": 1
}

可以看到,重复的id属性被移除,且最后一个id的值覆盖了第一个,其余重复id均被删除。测试更多重复id的情况也存在该行为,请问是否有办法控制ContentResult的这种自动行为?

解决方法
  • 直接返回字符串而非ContentResult:
    不需要ASP.NET Core对响应做额外处理时,直接返回string类型结果,框架不会解析或修改原始JSON字符串:

    return jsonString;
    

    这种方式下,带重复属性的JSON会原封不动发送给客户端。

  • 修改ContentResult的内容类型为纯文本:
    将ContentResult的内容类型设为text/plain,框架会把响应当作普通文本处理,不会触发JSON解析逻辑:

    return Content(jsonString, "text/plain");
    

    注意这种情况需要客户端自行处理JSON解析,因为响应头标记的是纯文本格式。

  • 避免生成带重复属性的JSON(推荐):
    从JSON规范来看,对象中重复键的行为属于未定义范畴,不同解析器的处理逻辑可能不一致(有的取第一个值,有的取最后一个)。如果没有特殊业务需求,建议在生成JSON阶段就避免重复属性,保证数据的规范性和跨解析器兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:20:06