是否可以仅将一个类的 MediaTypeFormatter 更改为 JSON?

2023-12-25

我有一个 Web api,其中全局配置配置为使用: XmlMediaTypeFormatter

我的问题是我不会使用新的控制器扩展此 Web api,而是使用 JsonMediaTypeFormatter。

是否可以仅将一个 API 控制器类的 MediaTypeFormatter 更改为 JSON?

我的问题是不返回 JSON,我已经通过返回 HttpResponseMessage 完成了这一点:

return new HttpResponseMessage
{
    Content = new ObjectContent<string>("Hello world", new JsonMediaTypeFormatter()),
    StatusCode = HttpStatusCode.OK
};

这是根据要求我遇到的问题。如果我有一个具有两个属性的对象:

public class VMRegistrant 
{
    public int MerchantId { get; set; }
    public string Email { get; set; }
}

我的控制器操作将 VMRegistrant 作为参数:

public HttpResponseMessage CreateRegistrant(VMRegistrant registrant)
{
    // Save registrant in db...
}

但问题是,当我使用 JSON 调用该操作时,它失败了。


您可以让您的控制器返回IHttpActionResult并使用扩展方法HttpRequestMessageExtensions.CreateResponse<T> https://msdn.microsoft.com/en-us/library/hh969014(v=vs.118).aspx并指定您要使用的格式化程序:

public IHttpActionResult Foo()
{
    var bar = new Bar { Message = "Hello" };
    return Request.CreateResponse(HttpStatusCode.OK, bar, new MediaTypeHeaderValue("application/json"));
}

另一种可能性是使用ApiController.Content https://msdn.microsoft.com/en-us/library/system.web.http.apicontroller.content(v=vs.118).aspx#M:System.Web.Http.ApiController.Content<code>1(System.Net.HttpStatusCode,</code>0,System.Net.Http.Formatting.MediaTypeFormatter,System.Net.Http.Headers.MediaTypeHeaderValue) method:

public IHttpActionResult Foo()
{
    var bar = new Bar { Message = "Hello" };
    return Content(HttpStatusCode.OK, bar, new JsonMediaTypeFormatter(), new MediaTypeHeaderValue("application/json"));
}

Edit:

一种可能性是自己阅读并反序列化内容Request通过从流中读取对象并使用 JSON 解析器(例如 Json.NET)从 JSON 创建对象:

public async Task<IHttpActionResult> FooAsync()
{
      var json = await Request.Content.ReadAsStringAsync();
      var content = JsonConvert.DeserializeObject<VMRegistrant>(json);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以仅将一个类的 MediaTypeFormatter 更改为 JSON? 的相关文章

  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • 如果 MS Chart Control 没有数据,我可以显示消息吗?

    如果没有要绘制图表的数据 是否有办法在 MS 图表控件上显示 默认 消息 我有一个图表 其中包含一些控件 允许用户选择各种日期范围 如果在该日期范围内没有要绘制图表的数据 则当前仅显示任何内容 或者至少显示图例和背景 仅此而已 我希望有一条
  • tsc 似乎没有从 tsconfig.json 中选择“排除”选项

    我正在努力让 tsc 获取我的 tsconfig json 文件并编译我的 ts 文件 它遇到了重复错误 我试图通过 tsconfig json 来避免这些错误 I have package json tsconfig json typin
  • minSdk 小于 21 时 Locale.forLanguageTag 的等效项?

    我想使用Locale method forLanguageTag 然而 使用它所需的设备minSdk是21 由于我希望我的应用程序与尽可能多的设备兼容 因此我需要较低 minSdk 的等效项 有人熟悉这种替代方案吗 添加 Apache Co
  • 用Matlab实现图像直方图

    我正在尝试在Matlab中实现 我知道有一个自定义函数可以实现它 灰度图像直方图 到目前为止我已经尝试过 function h histogram matlab imageSource openImage rgb2gray imread i
  • 如何指定R CMD执行目录?

    以前我可以通过以下方式从命令行启动 Rserve R CMD Rserve 在 Ubuntu 上升级到 3 0 2 后 我得到 usr lib R bin Rcmd 62 exec Rserve not found 我尝试过重新安装并手动启
  • 项目 Euler 7 Scala 问题

    我试图使用 scala 2 8 解决 Project Euler 问题 7 我实施的第一个解决方案大约需要 8 秒 def problem 7 Int var num 17 var primes new ArrayBuffer Int pr
  • 使用 Spring Boot、Spring Security 和 React 时发生 CORS 错误

    早上好 这两天我一直在解决这个问题 所以我决定发布一个关于它的问题 基本上我有一个 Spring Boot 项目 它通过 React JS 前端执行基本的 CRUD 操作 一切似乎都工作正常 直到我将 Spring Security 添加到
  • 使用 .NET 进行双向通信以进行通知的方法

    我有一个服务器 客户端项目 我使用 C 进行编码 WCF 作为服务器 我仅限于 HTTP 到目前为止对 wsdualhttpbinding 还没有运气 项目正在公司网络上运行 除了 WCF 双工之外 还有其他方法可以将通知从服务器发送到客户
  • 如何在推送时自动结帐?

    考虑以下情况 我有一个 git 存储库 foo git 其中包含 javascript 项目的代码 在这个存储库中有一个分支生产包含由网络服务器提供的代码状态 该服务器从以下位置获取代码 var www foo 该存储库是该项目的主存储库
  • 对于作为 Azure 应用服务 (P3) 托管的 .NET Core 2 Web api 的基准 RPS,我的期望应该是什么?

    我正在尝试衡量在 NET Core 2 中开发的 Web API 的基线 RPS 以下是迄今为止我遵循的步骤 从 Microsoft 的 VS 模板中生成了一个新的 空的 Web API 项目 添加了一个新的控制器 它执行基本的 你好 你的
  • Automake 将两个静态库合并为一个

    我正在尝试将预构建静态库中的符号包含到我正在构建的静态库中 然后 我正在构建的静态库将在可执行文件内部使用 我遇到的问题是我的静态库中从其他静态库获取了未定义的符号 这意味着我从预构建的静态库中需要的符号没有包含在我的静态库中 使用自动工具
  • 在 LWUIT 中拨打电话

    我有一个带有电话号码的文本字段 我想要做的就是当文本字段聚焦并按下呼叫按钮时 必须暂停应用程序并且应使用以下命令拨打文本字段的电话号码平台请求 http docs oracle com javame config cldc ref impl
  • MKOverlayView 和触摸

    我的地图上有一个自定义 MKOverlayView 我想检测触摸 但是 我似乎无法让覆盖层做出响应 我希望这会是愚蠢的事情 比如忘记将 userInteractionEnabled 设置为 YES 但是可惜 没有运气 目前 我的情况如下 m
  • 在 php 中处理数学方程

    用户可以输入他们喜欢的任何数学方程 带有一个变量 x 5 1 x 2 x 3 56 13 它们以字符串形式存储在数据库中 当检索它们时 我需要用 x 代替数字并检查方程的值 我怎么能这样做呢 我正在考虑编写一个解析器来解构字符串并将它们转换
  • 在C#中打开路径中有空格的Word文档

    我有这条路 path Cash Report 30 03 2012 01 11 07 Cash Flow Report Docx 当我使用下面的代码打开文件时 它会尝试打开每个单词 所以它会尝试打开 cash doc 然后打开 Report
  • 来自 GitHub 的桌面通知

    当我选择的项目出现新推送时 如何获得桌面通知 任何 RSS 阅读器都应该这样做 转到 GitHub 上的仪表板页面 其中显示 您的新闻源 右上角是带有文本 新闻源 的橙色 rss 图标 您可以订阅该图标
  • Python 3,PIL是Pillow的别名吗?

    Windows 7 64 位上的 Python 3 5 我很困惑 如果有人安装Pillow 那么必须使用被取代 卸载的图形库的名称PIL作为它的别名 根据枕头安装说明 http pillow readthedocs io en 3 3 x
  • 从 Storyboard 中初始化的 UIViewController 调用方法 - Objective C

    我是新来的Storyboarding在 Objective C 中 我需要调用方法UIVIewController 前Storyboarding我正在初始化UIViewController in AppDelegate或者只是在那里分配指针
  • 如何将Tomcat的端口从8080改为80?

    我想执行我的网络应用程序http localhost 1 前往conftomcat安装目录下的文件夹 e g C Tomcat 6 0 conf 2 编辑以下标签server xml file
  • 是否可以仅将一个类的 MediaTypeFormatter 更改为 JSON?

    我有一个 Web api 其中全局配置配置为使用 XmlMediaTypeFormatter 我的问题是我不会使用新的控制器扩展此 Web api 而是使用 JsonMediaTypeFormatter 是否可以仅将一个 API 控制器类的