在Delphi中反序列化数组

时间:2016-03-09 09:39:40

标签: php arrays delphi serialization

Delphi中有没有像PHP中的“unserialize()”这样的函数?

我拥有的数组是字符串格式,如下所示:

  

一个:6:{S:15: “info_buyRequest”;一个:2:{S:3: “数量”; I:1; S:1   5: “super_attribute”;一个:2:{I:234; S:4: “2047”; I:237; S:   4: “4312”;}} S:15: “attributes_info”;一个:2:{I:0;一个:2:{S:   5: “标签”; S:6: “Taglia”; S:5: “值”; S:6:“6   安妮 “;} I:1; A:2:{S:5:” 标签 “; S:9:” TIPOLOGIA “; S:5:” V   alue“; s:25:”Completo + Pallone   阿迪达斯“;}} s:11:”simple_name“; s:78:”Maglia Bacca Milan Carlos Ufficiale   2015 2016 Completo Pallone Jersey AC   MILAN “; S:10:” simple_sku “; S:4:” - 148 “; S:20:” product_calculations “; I:1; S:13:” 批货   t_type“; I:0;}

谢谢

1 个答案:

答案 0 :(得分:4)

  

Delphi中有没有像PHP中的“unserialize()”这样的函数?

Delphi运行时库中没有任何东西可以直接在PHP serialize()的输出上运行。该函数使用未标准化的定制格式。在理想的世界中,您将使用广泛接受的标准,如JSON。事实上,PHP支持JSON,如果使用json_encode()执行序列化,那么在Delphi或任何其他主流语言中反序列化将很简单。

您需要选择以下选项之一来解决问题:

  1. 更改生成文本的代码以使用标准格式,例如JSON。
  2. 使用PHP引擎将文本转码为标准格式(如JSON)。您可以使用json_encode(unserialize(...))
  3. 执行此操作
  4. 编写或查找现有的Delphi代码,用于解析和反序列化serialize()生成的文本。
  5. FWIW,任何提供serialize()输出的API都设计得很糟糕,人们可能会认为寻找替代方案是谨慎的。