从 Web api 返回 JsonResult,不带其属性

2024-01-27

我有一个 Web API 控制器,从那里我从一个操作返回一个 JSON 对象。

我这样做是这样的:

public ActionResult GetAllNotificationSettings()
{
    var result = new List<ListItems>();
    // Filling the list with data here...

    // Then I return the list
    return new JsonResult { Data = result };
}

但这样 JsonResult 对象包括它的Data属性被序列化为 JSON。所以我的最终 JSON 由操作返​​回如下所示:

{
    "ContentEncoding": null,
    "ContentType": null,
    "Data": {
        "ListItems": [
            {
                "ListId": 2,
                "Name": "John Doe"
            },
            {
                "ListId": 3,
                "Name": "Jane Doe"
            },
        ]
    },
    "JsonRequestBehavior": 1,
    "MaxJsonLength": null,
    "RecursionLimit": null
}

我无法序列化这个 JSON 字符串,因为JsonResult对象添加了各种其他属性。我只感兴趣ListItems, 没有其他的。但它会自动添加以下内容:ContentType, MaxJsonLength etc...

现在这对我不起作用,因为 JSON 字符串中的所有其他属性......

var myList = JsonConvert.DeserializeObject<List<ListItems>>(jsonString);

有没有办法从操作发送 JSON 对象,这样它就不会添加我不需要的所有属性?


作为使用 ASP.NET API 大约 3 年的人,我建议改为返回 HttpResponseMessage。不要使用 ActionResult 或 IEnumerable!

ActionResult 很糟糕,因为正如您所发现的。

返回 IEnumerable 不好,因为您可能想稍后扩展它并添加一些标头等。

使用 JsonResult 是不好的,因为您应该允许您的服务可扩展并支持其他响应格式,以防万一将来;如果你真的想限制它,你可以使用操作属性来实现,而不是在操作主体中。

public HttpResponseMessage GetAllNotificationSettings()
{
    var result = new List<ListItems>();
    // Filling the list with data here...

    // Then I return the list
    return Request.CreateResponse(HttpStatusCode.OK, result);
}

在我的测试中,我通常使用以下辅助方法从 HttpResponseMessage 中提取对象:

 public class ResponseResultExtractor
    {
        public T Extract<T>(HttpResponseMessage response)
        {
            return response.Content.ReadAsAsync<T>().Result;
        }
    }

var actual = ResponseResultExtractor.Extract<List<ListItems>>(response);

通过这种方式,您已经实现了以下目标:

  • 您的操作还可以返回错误消息和状态代码,例如 404 not find,因此您可以通过上述方式轻松处理它。
  • 您的操作不仅限于 JSON,还支持 JSON,具体取决于客户端的请求首选项和格式化程序中的设置。

看这个:http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Web api 返回 JsonResult,不带其属性 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 覆盖 jQuery 验证 MVC4 中的默认设置

    要覆盖查询验证插件 请在文件 http docs jquery com Plugins Validation validate toptions 推荐的方式是 selector validate invalidHandler functio
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 将字节转换为浮点数是否安全,或者可能会产生未定义的行为?

    是否存在字节序列 当转换为f32 or f64 在 Rust 中产生未定义的行为 我将非有限值 例如 NaN Infinity 等 计算为有效浮点值 评论给这个答案 https stackoverflow com a 43708483 43
  • 如何处理 Firefox 扩展中的每个请求?

    我试图捕获并处理网页或其中的插件即将发出的每个请求 例如 如果您打开控制台并启用网络日志记录 则当即将发送 HTTP 请求时 控制台会在其中显示该请求 我想捕获每个链接并调用我的函数 即使视频是由 Flash 播放器加载的 也登录到控制台
  • JPA 还是 Hibernate 用于 Java 持久性?

    我正在研究 Java NET 和 Groovy 中的企业应用程序的开发 对于每个平台 我们将尝试实现一个简单的 SOAP Web 服务有多困难 我们将使用最常用的工具和库来尽可能准确地研究现实世界 就这一点而言 当使用Hibernate进行
  • VB6 生成后,如何在 Azure Devops 中设置复制文件任务?

    作为回应关于为 VB6 项目制作 Azure 构建管道的问题 https stackoverflow com questions 54796027 how do i specify my custom agent in the build
  • PHP 中的静态函数变量和串联

    考虑以下 var foo bar Not a member of a class free standing or in a function 我一标记 var as static 然而 static var foo bar PHP WAM
  • 推送返回父函数

    有没有办法强制父函数返回输出 假设我有一个 做某事 的函数 并且在每个函数的开头想要 检查某事 如果检查失败我想返回 其他东西 在我下面的示例中 做某事 是对数 检查某事 意味着检查变量是否为非负数 其他事情 是否为负无穷大 weird l
  • 如果[获取变量]等于[数组]

    我正在尝试找到更简单的方法来编写逻辑 也就是说 如果一个变量等于数组中的任何键值 例如 someArray array a b c If GET foobar someArray return true else return false
  • 为什么当 btn 为 NIL 时我可以访问 btn.Caption?

    为什么这段代码不会崩溃 T为零 如何才能访问Caption if T is nil procedure Crash VAR T TButton begin T NIL T Caption lt this works end The TBut
  • 需要 Bash 整数表达式

    为了满足功能要求 我必须检索一个占空比参数 0 100 0 01 为了测试 我写了一些简单的东西 例如 bin bash if 1 lt 0 1 gt 100 then echo bad param else echo ok fi 我得到
  • 使用 javascript 显示/隐藏 div

    我有两个 div 一个是隐藏的 另一个是可见的 我正在使用CSSdisplay none 首先隐藏并使用style display block 当我刷新页面时 它在地址栏中给出相同的 div 名称 但 div 被隐藏 我只是希望 div 在
  • 在文本区域输入密钥

    I have a textarea On every Enter key pressed in textarea I want new line to be started with a bullet say How to go about
  • 图像类型文件 C# ASP.Net 所需的 IHttpHandler 示例

    任何人都可以提供 IHttpHnalder 处理图像类型的好例子 我想调整服务器上托管的图像的大小 使用 iHttpHandler 时出现问题 https stackoverflow com questions 385945 problem
  • 输出似乎只测试列表中最后一个的差异函数

    老问题链接 检查连续元素之间的差异是否相同 https stackoverflow com questions 52555706 checking if the difference between consecutive elements
  • 实体框架 4 - 连接 2 个表然后对它们进行分页的语法是什么?

    我有以下 linq to entities 查询 其中包含 2 个连接表 我想向其中添加分页 IQueryable
  • Acer Iconia A200 上的 VideoView getCurrentPosition() 不规则

    我有一个带有 VideoView 的应用程序 我设置了一个要在 VideoView 中播放的视频 视频播放时的某个时刻 它会暂停 然后 在暂停一段时间后 它将再次开始播放视频 但会向前播放到视频没有暂停时的位置 例如 视频开始播放 视频暂停
  • 我的 Excel 2010 添加仅在打开空白工作簿时显示。打开现有文档时不会显示

    我们已经制作了一个 Excel 插件 该插件已正确安装 并且仅在从主图标 或空白工作簿 打开 Excel 时才会显示 打开任何现有保存的 Excel 文档时 它不会显示在工具栏上 我已确保在打开现有文档时 在文件 gt 选项 gt 添加中
  • 如何在重新打开应用程序时显示相同的视图

    我有一个表视图 它在单击表中的某行时显示一个 Web 视图 该视图又从 SQLite 中获取数据 如果用户在 webview 中查看描述时按 home 键关闭应用程序 然后有时重新打开它 我应该让用户看到相同的屏幕 如何再次显示相同的视图
  • JQGrid 设置不同的 URL 进行添加、编辑、删除

    我想在网格顶部添加三个按钮 用于添加 编辑 删除 并希望为每个操作调用单独的 URL 我想为此使用表单编辑 谁能给我推荐一个示例代码 提前致谢 阿布舍克 如果您需要在网格顶部添加表单编辑按钮 您应该使用toppager truejqGrid
  • std.regex.regex 的返回值?

    我正在尝试编写一个函数 它接受一个输入字符串 一个正则表达式 由std regex regex来自原始字符串 和错误消息字符串 并尝试使用正则表达式匹配输入字符串中的某些内容 如果没有匹配则显示错误消息 到目前为止我想出了以下签名 stri
  • 从 Web api 返回 JsonResult,不带其属性

    我有一个 Web API 控制器 从那里我从一个操作返回一个 JSON 对象 我这样做是这样的 public ActionResult GetAllNotificationSettings var result new List