标签:end LJSON Delphi Neon finally Serialization 序列化
Neon - Serialization Library for Delphi
源码获取:https://github.com/paolo-rossi/delphi-neon
Neon是Delphi的序列化库,可帮助您将(来回)对象和其他值转换为 JSON。它支持简单的 Delphi 类型,但也支持复杂的类和记录。Neon在设计时考虑了REST ,用于在没有“元数据”或添加字段的应用程序之间交换纯数据,实际上Neon是WiRL REST 库的默认 JSON 序列化引擎。
配置
通过INeonConfiguration
界面进行广泛的配置:
- 单词大小写(大写、小写、PascalCase、camelCase、snake_case)
- 自定义案例(通过匿名方法)
- 成员类型(字段、属性)
- 如果您选择序列化字段,则可以选择忽略“F”
- 成员可见性(私有、受保护、公共、已发布)
- 自定义序列化程序注册
- 在序列化中使用 UTC 日期
Delphi 类型支持
Neon 支持大多数 Delphi 标准类型、记录、数组和当然类的(反)序列化。类可以像你想要的那样复杂,可以包含数组、(通用)列表、子类、记录等......
简单值
- 基本类型:字符串、整数、双精度、布尔值、TDateTime
复杂值
- (基本类型、记录、类等)的数组
- 具有(基本类型、记录、类、数组等)字段的记录
- 具有(基本类型、记录、类、数组等)字段的类
- 通用列表
- 字典(键必须是字符串类型)
- 可流式传输的课程
自定义序列化器
- 在配置中继承
TCustomSerializer
并注册新的序列化程序类
库/单元依赖项
该库不依赖于外部库/单元。
使用的delphi单位:
- System.JSON (DXE6+)
- System.Rtti (D2010+)
- System.Generics.Collections (D2009+)
序列化一个对象
使用 TNeon 实用程序类
序列化和反序列化的最简单方法是使用实用TNeon
程序类:
对象序列化:
var LJSON: TJSONValue; begin LJSON := TNeon.ObjectToJSON(AObject); try Memo1.Lines.Text := TJSONUtils.PrettyPrint(LJSON); finally LJSON.Free; end; end;
对象反序列化:
var LJSON: TJSONValue; begin LJSON := TJSONObject.ParseJSONValue(Memo1.Lines.Text); try TNeon.JSONToObject(AObject, LJSON, AConfig); finally LJSON.Free; end;
使用 TNeonSerializer 和 TNeonDeserializer 类
使用TNeonSerializerJSON
和TNeonDeserializerJSON
类,您可以更好地控制该过程。
对象序列化:
var LJSON: TJSONValue; LWriter: TNeonSerializerJSON; begin LWriter := TNeonSerializerJSON.Create(AConfig); try LJSON := LWriter.ObjectToJSON(AObject); try Memo1.Lines.Text := TJSONUtils.PrettyPrint(LJSON); MemoError.Lines.AddStrings(LWriter.Errors); finally LJSON.Free; end; finally LWriter.Free; end; end;
对象反序列化:
var LJSON: TJSONValue; LReader: TNeonDeserializerJSON; begin LJSON := TJSONObject.ParseJSONValue(Memo1.Lines.Text); if not Assigned(LJSON) then raise Exception.Create('Error parsing JSON string'); try LReader := TNeonDeserializerJSON.Create(AConfig); try LReader.JSONToObject(AObject, LJSON); MemoError.Lines.AddStrings(LWriter.Errors); finally LReader.Free; end; finally LJSON.Free; end;
配置Neon非常容易,
var LConfig: INeonConfiguration; begin LConfig := TNeonConfiguration.Default .SetMemberCase(TNeonCase.SnakeCase) // Case settings .SetMembers(TNeonMembers.Properties) // Member type settings .SetIgnoreFieldPrefix(True) // F Prefix settings .SetVisibility([mvPublic, mvPublished]) // Visibility settings // Custom serializer registration .GetSerializers.RegisterSerializer(TGUIDSerializer) ; end;
标签:end,LJSON,Delphi,Neon,finally,Serialization,序列化 来源: https://www.cnblogs.com/hnxxcxg/p/16350712.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。