WCF 客户端如何从 JSON 响应反序列化不兼容的日期格式?

2024-04-02

我在网上搜索了这方面的信息,但大多数结果都是关于创建 WCF 服务或服务在您控制之下的情况。

我正在为 RESTful JSON 服务构建 WCF 客户端代理,这是我无法控制的。我正在使用基本的 ServiceContract/DataContract 模式,并尝试让框架完成尽可能多的工作。

大多数情况下,这工作正常,但来自此外部服务的所有日期时间字段都采用特定格式,例如

{"SomeObject": 
    {"details":"blue and round", "lastmodified":"2013/01/02 23:14:55 +0000"}
}

所以我得到一个错误:

反序列化 MyNamespace.SomeObject 类型的对象时出错。日期时间内容“2013/01/02 23:14:55 +0000”未按照 JSON 的要求以“/Date(”开头并以“)/”结尾。”。

我的数据合同是:

namespace Marshmallow.WebServices.ServiceModels
{
    [DataContract]
    public class SomeObject
    {
        [DataMember(Name = "details")]
        public string Details { get; set; }

        [DataMember(Name = "lastmodified")]
        public DateTime LastModified { get; set; }
    }
}

我的服务合同是:

[ServiceContract]
public interface ICoolExternalApi
{
    [OperationContract]
    [WebGet(UriTemplate = "/something.json",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped)]
    [return: MessageParameter(Name = "SomeObject")]
    SomeObject GetAccount();
}

我想知道的是,我可以在哪里粘贴一些代码来定义 WCF 应如何反序列化 LastModified 字段(从字符串中创建一个 DateTime 对象)?

或者更好的是,定义如何反序列化我的所有 DataContract 的所有 DateTime 数据成员。我不想有很多重复的代码。

我也不想诉诸于某些第三方反序列化器,也不想开始将其他所有内容都通过自定义反序列化方法(如果可以避免的话)。


我能想到两件事:

  1. 将 LastModified 更改为字符串,然后自行将其转换为 Datetime 对象。但这意味着要公开对象上相同数据的两个属性。
  2. 编写 IDispatchMessageInspector 以在反序列化发生之前拦截消息并使用正则表达式处理原始消息。它将为您服务中的所有日期提供一站式解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF 客户端如何从 JSON 响应反序列化不兼容的日期格式? 的相关文章

  • 如何在开头时解析 json 文件

    我想解析以下 JSON 文件 但以 向我表明这是一个数组 然后继续 对象 我当前的解析器返回一个 JSON 对象 我的问题是 如何修改解析器来解析这个文件 这样解析器将为我提供其他 JSON 文件 从对象或排列开始 JSON 文件 codi
  • 从 React.js 中的 json 文件获取数据

    我有一个 json 文件调用 data json 例如 我使用 React js id 1 title Child Bride id 2 title Last Time I Committed Suicide The id 3 title
  • 如何修改新 PostgreSQL JSON 数据类型中的字段?

    使用 postgresql 9 3 我可以SELECTJSON 数据类型的特定字段 但如何使用来修改它们UPDATE 我在 postgresql 文档或网上的任何地方都找不到任何这样的示例 我已经尝试过显而易见的方法 postgres cr
  • 将 Php 数组编码为 json [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想对我的 php 数组进行编码 A
  • 在 LINQ 中确定具有分钟精度的日期时间值的相等性

    我需要使用分钟精度比较两个日期时间值以确定相等 完全相同 这是最好的方法吗 我的日期可能有秒和毫秒 但我只想考虑到分钟 where Math Abs datetime1 Subtract datetime2 TotalMinutes 0 检
  • 如何使用 PHP 通过 JSON 发送 HTML 元素?

    以下功能 try query this gt pdo gt prepare SELECT FROM bookings WHERE TourID AND dTourDate and Status NOT LIKE Cancelled quer
  • android中如何将字符串转换为unicode

    我正在解析一些unicodes from json to my android应用程序 API 给出unicodes像这样的图标 ue600 当我将这个unicode直接添加到textview like textview setText u
  • Swift 3 将日期截断为日/月/年开始的简单方法

    有没有像我们在 Oracle 数据库中所做的那样简单的方法来截断日期 例如 我需要从午夜开始设置值 在 Oracle 中我可以执行 TRUNC SYSDATE 但我在 Swift 中看不到类似的方法 我检查了 StackOverflow 并
  • 从 Json 纯 JavaScript 创建表

    我有一个带有多个可以更改的键的 Json 如下所示 Var children num 6 name me phone 7 num 8 name him phone 9 我想要一个带有标题的表格 号码 姓名 电话 我怎样才能只用 JavaSc
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • 从服务器获取当前日期时间并将其转换为 C# 中的本地时间

    帮助 我有一台服务器 其运行时间为 GMT 07 00 我的当地时间是 GMT 05 30 小时 我需要从服务器获取当前日期和时间 并将该日期和时间转换为我的当地时间 我已经尝试了很多代码 但仍然没有找到连续的方法来做到这一点 有人可以帮我
  • 参考上一个问题:为什么 VBA 没有加载所有发票详细信息

    除了上一个问题之外 我们在销售发票上仍然存在相同的加载失败问题 下面的 VBA Json 仍然仅加载一行或第一个产品详细信息行 而不是与表中该销售发票合作的所有产品行详细信息 我们希望下面的 VBA 能够根据参数加载发票详细信息 例如 如果
  • Apache Camel 的 JsonMappingException

    我在骆驼路线上遇到以下异常 Caused by com fasterxml jackson databind JsonMappingException No serializer found for class org apache cam
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 实体创建无用的 id 字段

    我有一个CrudRepository与两个实体 Problem 特征实体总是创建一个附加的id数据库中的字段但未选择正确的characteristic id要生成的字段JSON machine entity machine id name
  • Bug 组合:jQuery 1.4、ajax/json、Firebug Lite 和 IE 8

    我刚刚得出结论 无论我如何尝试 jQuery 的 ajax 调用都无法在 IE 8 中处理 JSON 数据 我发现我可以使用 jQuery 1 3 2 库 这解决了问题 但 1 4 根本无法处理 JSON ajax 请求 即使返回的 JSO
  • 如何根据键名称反序列化为枚举变体?

    我有两种形式的 JSON Example field 42 A 76 Example field 42 B 110 我想将它反序列化成这样的结构 struct Example field i32 an enum AnEnum where e
  • PySpark - RDD 到 JSON

    我有一个 Hive 查询返回以下格式的数据 ip category score 1 2 3 4 X 5 10 10 10 10 A 2 1 2 3 4 Y 2 12 12 12 12 G 10 1 2 3 4 Z 9 10 10 10 10
  • 如何将 JSON 文本转换为 PHP 关联数组

    我将以下 JSON 对象存储在文本文件 data txt 中 player black time 0 from 2c to 3d 我使用 php 阅读 问题 有没有简单的方法可以转换 data到 PHP 关联数组 我尝试过使用json de

随机推荐