Repo: https://github.com/harry-1012/Go-PHP-serialize-json

Example source (Chinese characters preserved in sample):

Array(
[0] => Array(
[id] => 1
[price] => 80
[name] => 一个名字
)
)

Serialized string:

a:1:{i:0;a:3:{s:2:"id";i:1;s:5:"price";i:80;s:4:"name";s:12:"一个名字";}}

JSON result:

[{"Id":1,"Price":80,"Name":"一个名字"}]

Core conversion (simplified excerpt):

func (serObj *serObj) Phpserialize2Json(serialize string) string {
var raw []interface{}
_ = phpserialize.Unmarshal([]byte(serialize), &raw)
var out []serializeStruct
for _, row := range raw {
var item serializeStruct
for k,v := range row.(map[interface{}]interface{}) {
switch k {
case "id": item.Id = v.(int64)
case "price": item.Price = v.(int64)
case "name": item.Name = v.(string)
}
}
out = append(out, item)
}
b,_ := json.Marshal(out)
decode,_ := url.QueryUnescape(string(b))
return decode
}

Notes:

  1. phpserialize decodes into []interface{} and map keys are interface{}.
  2. Cast numeric fields carefully; PHP ints become Go int64.
  3. After json.Marshal, URL unescape to restore multibyte characters.