在Delphi中取消数组的序列化



在Delphi中有类似于PHP中的"unserialize(("的函数吗?

我的数组是这样的字符串格式:

a: 6:{s:15:"info_buyRequest";a:2:{s:3:"数量";i:1;s:15:"super_attribute";a: 2:{i:234;s:4:"2047";i:237;s:4:"4312";}}s: 15:"attributes_info";a: 2:{i:0;a:2:{s:5:"标签";s: 6:"塔利亚";s: 5:"价值";s: 6:"6anni";{i:1;a:2:{s:5:"标签";s:9:"TIPOLOGIA";s:5:"vvalue";s:25:"Completo+Pallone阿迪达斯";s:11:"simple_name";s:78:"Maglia Bacca Milan Carlos Uofficiale2015-2016 Completo Pallone Jersey AC米兰";s:10:"simple_sku";s:4:"-148";s:20:"product_calculations";i:1;s:13:"shipmen"t_type";i:0;}

感谢

Delphi中有没有类似PHP中的"unserialize(("的函数?

Delphi运行库中没有任何内容可以直接对PHP serialize()的输出进行操作。该功能使用了未标准化的定制格式。在理想的情况下,您将使用一个广泛接受的标准,如JSON。事实上,PHP支持JSON,如果使用json_encode()执行序列化,那么在Delphi或任何其他主流语言中进行反序列化都很简单。

您需要采取以下选项之一来解决您的问题:

  1. 将生成文本的代码更改为使用标准格式(如JSON(
  2. 使用PHP引擎将文本转换为JSON等标准格式。使用json_encode(unserialize(...))可以做到这一点
  3. 编写或查找现有的Delphi代码,用于解析和反序列化serialize()生成的文本

FWIW,任何提供serialize()输出的API都设计得很糟糕,人们可能会认为寻找替代方案是明智的。

最新更新