RestSharp 序列化为 JSON,对象未按预期使用 SerializeAs 属性

2024-01-25

我在用休息锐利(通过 NuGet 的版本 104.4)调用 Rest Web 服务。我设计了一组与 API 中公开的资源相匹配的对象 (POCO)。但是,我的对象属性名称与发布数据时 Rest 服务所期望的名称不匹配,因此当我向 Rest 服务发出请求以使它们匹配时,我想“转换”它们。我读到添加SerializeAs我的 POCO 属性上的属性(指定了名称)将使它们正确序列化,但事实并非如此。

My POCO

Imports RestSharp.Serializers

<Serializable(), SerializeAs(Name:="ApiMember")>
Public Class ApiMember
    <SerializeAs(Name:="id")>
    Public Property Id As Integer?

    <SerializeAs(Name:="email")>
    Public Property EmailAddress As String

    <SerializeAs(Name:="firstname")>
    Public Property Firstname As String

    <SerializeAs(Name:="lastname")>
    Public Property Lastname As String
End Class

我对 API 的调用

Dim request As RestRequest = New RestRequest(Method.POST)
Dim member As ApiMember = new ApiMember()

member.EmailAddress = "[email protected] /cdn-cgi/l/email-protection"

request.Resource = "members"
request.RequestFormat = DataFormat.Json
request.AddBody(member)

Dim client As RestClient = New RestClient()
client.BaseUrl = "http://url.com"
client.Authenticator = New HttpBasicAuthenticator("username", "password")
client.Execute(Of ApiGenericResponse)(request)

最终发布的内容

{"Id":null,"EmailAddress":"[email protected] /cdn-cgi/l/email-protection","Firstname":null,"Lastname":null}

请注意,属性的名称与我在中指定的名称不匹配SerializeAs(大写,电子邮件地址名称)

我错过了什么吗?


这是给@MaxiWheat 和任何其他对如何使用感兴趣的人的JSON.NET作为 RestSharp 请求中的 JSON 序列化器。基本上,我使用了中描述的方法帕特里克·莱利 (Patrick Riley) 的这篇博文 http://patrickrileyblogs.blogspot.com/2014/02/restsharp-using-jsonnet-serializer.html:

// create the request
var request = new RestRequest(yourUrlHere, Method.POST) { RequestFormat = DataFormat.Json };

// attach the JSON.NET serializer for RestSharp
restRequest.JsonSerializer = new RestSharpJsonNetSerializer();

and the RestSharpJsonNetSerializer是 JSON.NET 人员 (John Sheehan) 的一个实现(不到 100 行代码)可以在他们的 Github 页面上找到 https://github.com/restsharp/RestSharp/blob/86b31f9adf049d7fb821de8279154f41a17b36f7/RestSharp/Serializers/JsonSerializer.cs

通过这个设置,我的问题消失了,我能够拥有一个具有良好 CamelCase 属性的正确 DTO,而序列化的 JSON 则以所有“小写”形式使用它们。

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

RestSharp 序列化为 JSON,对象未按预期使用 SerializeAs 属性 的相关文章

  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • 取消任务

    我尝试运行一个关于取消任务的简单示例 如下所示 CancellationTokenSource tokenSource2 new CancellationTokenSource CancellationToken token2 tokenS
  • SQLite .NET 性能,如何加快速度?

    在我的系统上 约 86000 个 SQLite 插入需要长达 20 分钟 意味着每秒约 70 个插入 我要做数百万 我怎样才能加快速度 对每一行的 SQLiteConnection 对象调用 Open 和 Close 会降低性能吗 交易有帮
  • 使用 C++ 和 BOOST 读取 JSON 文件

    HTTP 服务器向我发送一个 JSON 响应 字符串 如下所示 folders id 109 parent id 110 path 1 105 110 id 110 parent id 105 path 1 105 files id 26
  • 如何在C#背后的代码中动态创建数据模板并绑定TreeView分层数据

    我有一个场景 其中树视图动态更改其数据模板和数据绑定定义 我在 XAML 中创建了一个树视图 如下所示
  • 抛出并保留堆栈跟踪不符合代码分析所描述的预期

    进行代码分析给了我项目 CA2200 CA2200 重新抛出以保留堆栈详细信息 func 重新抛出捕获的异常并将其显式指定为参数 请改用不带参数的 throw 以保留最初引发异常的堆栈位置 我已经实现了该建议 但无论如何我似乎都得到了相同的
  • NuGet:包含 .pdb 文件并排除“Content”文件夹

    我已将以下行合并到 CI 构建中在每个构建上创建一个私有 NuGet 包 nuget pack C Projects Test Test vbproj OutputDirectory nas1 NuGet The 读取AssemblyInf
  • nlohmann/json 框架中的未知断点

    一段时间以来 当我在启用断点的 Xcode 下运行我的应用程序时 我显然在名为 nlohmann basic json 的系统框架中遇到了一个未知断点 我可以毫无问题地继续执行 但这无论如何都很烦人 知道这个断点的原因是什么 或者更好的是
  • Avro 模式中是否可以有一个可选字段(即该字段根本不会出现在 .json 文件中)?

    Avro 模式中是否可以有一个可选字段 即该字段根本不会出现在 JSON 文件中 在我的 Avro 架构中 我有两个字段 name author type null string default null name importance t
  • Winforms 中的 WPF ElementHost 最大化时崩溃 (Windows)

    我正在尝试将新的 WPF 控件集成到现有的 WinForms 应用程序中 并使用 ElementHost Dock Fill 来托管以下 XAML UserControl NET 4 当我将 WinForm 设置为最大化时 我的整个操作系统
  • 家庭自动化图书馆[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名 C 开发人员 希望将家庭自动化作为一种 爱好 我做了一些研究 但想知道是否有人知道支持 In
  • 如何有效确保小数值至少有 N 位小数

    我想在进行算术运算之前有效地确保十进制值至少有 N 个位置 在下面的示例中 3 显然我可以格式化 0 000 然后解析 但它的效率相对较低 我正在寻找一种避免与字符串转换的解决方案 我尝试过以下解决方案 decimal d 1 23M d
  • 使一个对象只能被同一程序集中的另一个对象访问?

    每个业务对象都有一个包含 sql 调用的匹配对象 我想限制这些 sql 对象 使其只能由匹配的业务对象使用 如何才能实现这一目标 Update 格雷格提出了关于可测试性的观点 由于 SqlObjects 将包含非常特定于业务流程的 sql
  • C# 和匿名对象数组

    这样的表达是什么意思呢 obj DataSource new new Text Silverlight Count 10 Link Tags Silverlight new Text IIS 7 Count 11 Link http iis
  • 在 JsonConverter 中递归调用 JsonSerializer

    我正在写一个JsonConverter要执行一些我需要在读 写时完成的转换任务 特别是 我采用现有的序列化行为 并在写入 读取时添加一些附加属性 在 的里面JsonConverter 我想利用通过的JsonSerializer实例来执行大部
  • 在 C#.NET 应用程序中使用 SQL Server 时间数据类型?

    如何使用 SQLtimeSQL Server 2008 中 C NET 中引入的数据类型 我一直在努力让它发挥作用 但没有成功 这是一个MSDN 文章 http msdn microsoft com en us library bb6751
  • 在 SQL 2005+ 中,CLR 存储过程是否优于 TSQL 存储过程?

    我目前的观点是否定的 更喜欢 Transact SQL 存储过程 因为它们是重量更轻且 可能 性能更高的选项 而 CLR 过程允许开发人员进行各种恶作剧 然而最近我需要调试一些写得非常糟糕的 TSQL 存储过程 像往常一样 我发现许多问题是
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags

随机推荐

  • 在 ADO.NET + SQL Server DateTime 列的生命周期中如何处理时区?

    使用 SQL Server 2008 这是一个非常初级的问题 我确实可以使用一些详细的信息 但是 Google 上的信息似乎围绕这个主题进行了很多讨论 如果有一些关于其工作原理的详细说明 那就太好了 假设我有一个日期时间列 在 ADO NE
  • 如何从php中的多维数组获取父数组索引

    我有一个数组 arr 当我打印它时 它显示的结果如下 Array 0 gt Array name gt homeandgarden Control Type 1 gt Array 0 gt product 1 gt Array name g
  • C# 中的装饰器模式和扩展方法

    在首先描述我的问题之前 我想定义装饰器和扩展方法的定义装饰者 动态地将附加职责附加到对象 装饰器为扩展功能提供了子类化的灵活替代方案 扩展方法 扩展方法使您能够向现有类型 添加 方法 而无需创建新的派生类型 重新编译或以其他方式修改原始类型
  • 如何注入 FactoryBean 而不是它生成的对象?

    假设我有以下 Spring 配置 Spring 版本是 3 0 3
  • 如何从 matplotlib 的 button_press_event 返回值?

    我是新来的 也是 python 和 matplotlib 上的新人 我想创建一个代码 允许我从函数定义中获取坐标 event xdata 以便我以后可以使用该数据 但正如我到目前为止所读到的 一些变量是局部变量 函数内部的变量 其他变量是全
  • 处理 python 请求中的井号 (#)

    我正在使用请求来编译自定义 URL 并且一个参数包含井号 谁能解释如何在不编码井号的情况下传递参数 这将返回正确的 CSV 文件 results url https baseballsavant mlb com statcast searc
  • 构造 ClassDict 的预期参数为零(对于 pyspark.ml.linalg.SparseVector)

    我正在努力创建一个 LDA 模型 这是我到目前为止所做的 创建一个一元组并将数据帧转换为 RDD 基于这个帖子 https databricks prod cloudfront cloud databricks com public 402
  • 设置 Grails GORM 字符串的默认 maxLength?

    我知道您可以通过 grails gorm default constraints 配置属性按名称设置默认约束 grails gorm default constraints nullable true 但有没有办法按类型设置它 我想将所有字
  • 如何将类方法作为参数传递给perl 6中类的另一个方法

    我有一个如下所示的脚本 目的是使用不同的过滤方法来过滤列表 这是代码 2 3 class list filter 4 has my list 1 20 5 6 method filter l return True 7 8 filter m
  • $(document).ready() 检查会减慢 IE 速度吗?

    我一直在与一家名为捕捉点 http www catchpoint com 解决客户端代码指标中的一些不一致问题 他们有一些触发的事件来衡量页面加载过程中的里程碑 他们为我们提供的指标是在 IE8 中 现在 他们声称 JQuery 确定 IE
  • 熊猫辅助轴

    我有以下数据框 Date A B 0 2017 05 31 17453139 5 865738 1 2017 06 30 17425164 5 272728 2 2017 07 31 17480789 4 843094 当我运行这个时 df
  • OpenCV PS 3 眼

    我在 Ubuntu 10 10 上 尝试从 ps3eye 相机捕获视频 afaik OpenCV 使用 v4l 从网络摄像头捕获 gucview cheese vlc 都可以访问和使用相机 但是当使用 opencv 捕获时 我得到空白帧 D
  • PHP 检测重复文本

    我有一个网站 用户可以在其中输入有关自己的描述 大多数用户会编写适当的内容 但有些用户只是多次复制 粘贴相同的文本 以创建大量文本的外观 例如 爱一个 和平爱一个 和平爱一个 和平爱一个 和平爱一个 和平爱一个 和平 有没有好的方法可以用
  • vue 2生命周期-如何在Destroy之前停止?

    我可以添加一些东西吗beforeDestroy以防止损坏组件 或者有什么办法可以防止损坏组件 我的情况是 当我通过 vue route 更改 spa 页面时 我首先使用 watch 路由 但我发现这不会触发 因为组件只是销毁了 As 贝尔明
  • 如何在 R 中相对于中心按顺时针顺序对点进行排序?

    我有一个带有 X 和 Y 坐标的数据集 我试图找出一种方法来从中心沿 R 的顺时针 或逆时针 方向对它们进行排序 假设以纬度和经度的中位数为中心 样本数据 df lt structure list name c A B C D E F G
  • 复制省略法

    从复制省略法的标准定义来看 在 C 计算机编程中 复制省略是指消除不必要的对象复制的编译器优化技术 让我们考虑以下代码 include
  • java初学者if/else if问题

    尝试设置 String 变量的代码块似乎出了问题 因为无论我运行程序时做什么 对话框总是显示 otto txt 有谁知道我在这里做错了什么 谢谢 猎食 import java awt FlowLayout import java awt e
  • 如何用 python 显式绘制 y 轴

    I used pp yscale log 在我的 python 脚本中绘制一个以对数刻度显示 y 刻度的图形 然而 图中并没有出现y轴 有没有办法在python中显式显示y轴 leg pp legend series labels loc
  • 适用于 iPhone 的 Flex 应用程序

    是否可以使用 Adob e Flex AIR 为 iPhone 制作应用程序 有教程 指点吗 不 我不相信你能做到 尽管 iPhone 支持 Flash 的传闻已经有一段时间了 但它仍然未能实现 预计到达时间 看来现在这是可能的 http
  • RestSharp 序列化为 JSON,对象未按预期使用 SerializeAs 属性

    我在用休息锐利 通过 NuGet 的版本 104 4 调用 Rest Web 服务 我设计了一组与 API 中公开的资源相匹配的对象 POCO 但是 我的对象属性名称与发布数据时 Rest 服务所期望的名称不匹配 因此当我向 Rest 服务