2010-12-22 142 views
4

我正在开发一个Coldfusion项目,我需要从wordpress动力数据库中提取一些信息。我需要的一些信息是存储在wp_options表中的序列化数组中。我无法弄清楚如何在Coldfusion中反序列化数组数据。在Coldfusion中反序列化PHP数组

目前,我正在使用ColdFusion 8的开发版本,因为我的作品应用程序是建立在ColdFusion的8

我只能够找到这个链接http://www.cfinsider.com/index.cfm/2010/5/4/Serializing--Deserializing-in-ColdFusion-9其中谈到我不能升级到ColdFusion的9关于反序列化CFC,但它似乎不适用于我传递的数组。

这里是我试图deserialze

 
a:2:{i:2;a:2:{s:5:"title";s:0:"";s:6:"number";i:5;}s:12:"_multiwidget";i:1;} 

任何帮助将是巨大的数据的一个例子。

回答

4

如果您可以将PHP数组序列化为JSON字符串,则可以在CF端使用deserializeJson。

+1

如果可能的话我会走这条路。 – Christian 2010-12-22 16:36:56

+1

同意 - PHP可以导出JSON,几乎所有其他语言都可以导入它。这绝对是首选格式。 – Spudley 2010-12-22 16:39:07

3

那么,这是PHP序列化的结果 - 我假设CF使用完全不同的过程。模式似乎相当简单:

datatype:size:structure 

numbertype:numbervalue 

所以

a:2:{i:2;s:3:"foo"} 

将意味着 “大小为2的数组{整数2;尺寸3的串 '富'}”。请注意,数组可以嵌套,并且对象和其他序列化类可能会变得复杂(请参见PHP's manual on serializing objects)。

6

你最好的选择可能是看看肖恩科菲尔德的scripting for ColdFusion项目。我能做到以下几点吧:

<script:php> 
    <?php 
     $array = unserialize('a:2:{i:2;a:2:{s:5:"title";s:0:"";s:6:"number";i:5;}s:12:"_multiwidget";i:1;}'); 
     $_COLDFUSION["test"] = json_encode($array); 
    ?> 
</script:php> 

<cfdump var="#deserializeJSON(variables.test)#"> 

它生产:

alt text