0

在我的 Delphi 10.1 Berlin Datasnap REST 应用程序中,我需要自定义对象的 JSON 序列化。

我想找到一个使用 JSONReflect 属性的解决方案,并且不涉及为每个特定字段创建转换器和恢复器,如Daniele Teti的这篇文章中所述。

特别是,我正在尝试序列化一个包含以下内容的对象:

  • 一个二进制文件,以 JSON 表示形式转换 - 就像一个字节数组
  • 一些 TDateTime 字段,以转换为 ISO 格式的字符串

我找到了Marco Cantù 的技术 PDF 文档,其中讨论了 JSONReflect 属性以启用字段转换,但我找不到有关它的文档。

任何人都可以帮助我,好吗?

4

1 回答 1

1

使用 JSONReflect 属性自动意味着使用转换器和还原器。Delphi XE6 附带了示例项目 MarshallUnmarshall,其中涵盖了 JSON 序列化。RAD Studio 演示代码也可在线获得。

如果要序列化包含 ISO 格式字符串中的 TDateTime 字段的对象,还可以使用在 Rest.Json 单元中定义的标准 Tjson 类。它包含一个ObjectToJsonString方法。在 AOptions 参数中,您可以指定使用 ISO 标准格式化日期。

class function ObjectToJsonString(AObject: TObject; AOptions: TJsonOptions = [joDateIsUTC, joDateFormatISO8601]): string;

要在 JSON 中序列化二进制文件 Daniele Teti 在他的Delphi Cookbook中有示例代码。不幸的是,我无法分享我认为的示例代码。推荐阅读!第二版刚刚出现。

于 2016-06-29T13:38:08.617 回答