gpt4 book ai didi

c# - 保护我的代码免受 Newtonsoft JSON 的影响

转载 作者:行者123 更新时间:2023-11-30 14:46:32 25 4
gpt4 key购买 nike

我正在构建一个教科书 .NET WebAPI Web 服务,在最简单的情况下,它应该接收一个 GET 请求并返回一个 JSON 对象数组。

但该项目还加载了 NewtonsoftJSON nuget 包,显然该包重新定义了 ApiController 类,因此其 Json() 方法具有不同的声明。最终结果是我得到以下编译时错误:

enter image description here

如何保护我的 Controller 声明不被 Newtonsoft 重新定义?

public class ImmediateInformationController : ApiController
{
public JsonResult Get([FromUri] ImmediateInformation ii)
{
// some code here
return this.Json(iil, JsonRequestBehavior.AllowGet);
}
}

一些背景知识:最初我只返回 iil,但是在浏览器中测试时,它提示下载包含 JSON 的 ImmediateInformation.json 文件我需要。上面是尝试将 JSON 作为纯文本返回,这让我发现当参数类型与 MSDN 文档不匹配时,Newtonsoft 重新定义了 ApiController

enter image description here

重申一下:问题只是使用 JSON 下载问题来说明我在做什么。如何确保当我将 Controller 类声明为 ApiController 的后代时,它是 Microsoft 的 API Controller ,而不是 Newtonsoft 的?

最佳答案

Web API 2 默认包含 JSON.NET,并在其 Json() method 中使用它.您的教程可能不针对 Web API 2,而是针对早期版本或 MVC instead of Web API .

要么省略 JsonRequestBehavior:

return this.Json(iil);

或者简单地返回正确的返回类型并让 Web API 处理序列化:

public ImmediateInformation Get([FromUri] ImmediateInformation ii)
{
return ii;
}

您也可以使用 IHttpActionResult 执行此操作:

public IHttpActionResult Get([FromUri] ImmediateInformation ii)
{
return this.Ok(ii);
}

根据您的编辑和评论,您实际上正在寻找 How can I convince IE to simply display application/json rather than offer to download it? .

关于c# - 保护我的代码免受 Newtonsoft JSON 的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48775560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com