golang 解析 json 文件的无解情况

拿到一个json文件,格式如下

[["ss1", "ss2", 3, "ss4"],["tt1", "tt2", 3, "tt4"]]

代码

data, err := ioutil.ReadFile(os.Args[2])
if err != nil {
    fmt.Println(`read file`, err)
}

var v [][]string
err = json.Unmarshal(data, &v)
if err != nil {
    fmt.Println(`json unmeshal error:`, err)
}

执行返回

json unmeshal error: json: cannot unmarshal number into Go value of type string

数据格式对应不上,想了一下这样写

type dataFormat struct {
    S1     string
    S2     string
    I1     int
    S3     string
}
var v []dataFormat
err = json.Unmarshal(data, &v)
if err != nil {
    fmt.Println(`json unmeshal error:`, err)
}

执行返回

json unmeshal error: json: cannot unmarshal array into Go value of type main.dataFormat

正常,因为本身json文件的格式确实是一个数组

所以问题来了,json文件的格式是数组,但是其中第三个字段是int类型,其余的都是string类型,在强类型语言里这是无解的,因为一个数组只能全是string或者int。

最后还是写了个PHP脚本解决。。。。