Groovy相当于php的反序列化

时间:2014-04-17 05:01:59

标签: serialization groovy

我正在处理来自Wordpress数据库的序列化数据。使用PHP序列化函数创建的字符串看起来像这样:

一个:4:{S:6:"重量&#34 ;; S:2:" 15&#34 ;; S:6:"长度&#34 ;; S:1 :" 8&#34 ;; S:5:"宽度&#34 ;; S:1:" 8&#34 ;; S:6:"高度&#34 ;;小号:2:" 17&#34 ;;}

有没有办法在Groovy中反序列化?或者这不是标准化序列化的产物?

谢谢!

2 个答案:

答案 0 :(得分:3)

以下是使用pherialize library

的示例
@GrabResolver( name='Ailis', root='http://nexus.ailis.de/content/groups/public' )
@Grab( 'de.ailis.pherialize:pherialize:1.2.1' )
import de.ailis.pherialize.*

def phpValue = 'a:4:{s:6:"weight";s:2:"15";s:6:"length";s:1:"8";s:5:"width";s:1:"8";s:6:"height";s:2:"17";}'

def groovyMap = Pherialize.unserialize( phpValue ).toArray().collectEntries { k, v ->
    [ k.toType( k.type ), v.toType( v.type ) ]
}

assert groovyMap == [ weight:'15', length:'8', width:'8', height:'17' ]

虽然如果可能的话,我建议你以他们原生说的格式(json?)分享两者之间的数据。

答案 1 :(得分:1)

已经有was个问题。似乎有用于在Java中实现的PHP序列化的解析器。每个java lib都可以与groovy一起使用,因此解决这个问题应该不是问题。可以找到库here