为了账号安全,请及时绑定邮箱和手机立即绑定

golang 如何解析php serialize 序列化的数据

golang 如何解析php serialize 序列化的数据

PHP
千巷猫影 2019-03-18 18:05:24
1.我需要在golang中解析php 序列化生成的字符串初步想法是将其解析成json字符串,然后再获取具体的值,用了一个php_serialize包来解析,但是在解析之后得到了一个interface{}类型的结果我不知道该如何解析这个interface{} 2.示例代码: package main import ( "github.com/yvasiyarov/php_session_decoder/php_serialize" "fmt" ) func main() { str := `a:3:{s:4:"name";s:3:"tom";s:3:"age";s:2:"23";s:7:"friends";a:2:{i:0;a:1:{s:4:"name";s:5:"jerry";}i:1;a:1:{s:4:"name";s:4:"jack";}}}` decoder := php_serialize.NewUnSerializer(str) if result, err := decoder.Decode(); err != nil { panic(err) } else { fmt.Println(result) } } 打印结果: map[name:tom age:23 friends:map[0:map[name:jerry] 1:map[name:jack]]] 3.这个result是一个 php_serialize.PhpValue 的类型,查看源码后发现这个PhpValue 是一个interface{}类型。 现在我想拿到result内部的详细数据,比如name,age,friends什么的,不知道该怎么做了,求教
查看完整描述

4 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

golang不了解, 但不同语言之间交互, 不要用语言专用的数组结果吧.

用xml, json, 都是php serialize好.

我猜解出来的应该是一个map结果

查看完整回答
反对 回复 2019-03-18
?
倚天杖

TA贡献1828条经验 获得超3个赞

根据json格式定义一个struct,例如 type Person struct{}, 然后进行类型断言:

    if persons, ok := result.([]Person); ok {
        for _, p := range persons {
            fmt.Println(p)
        }
    }
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 630 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信