在Goaling中的一个键中解组多个数据类型

在Goaling中的一个键中解组多个数据类型,go,Go,我有一个JSON密钥,它将包含以下任何一个数据 1.{“值”:“ve”} 2.{“值”:[“ve”,“ff”]} 3.{“值”:[1,2]} 4.{“值”:3} 如何解组golang的结构?最简单的方法就是在结构中使用接口{}。见: package main import ( "encoding/json" "fmt" ) type decoded struct { Value interface{} `json:"value"` } func deco

我有一个JSON密钥,它将包含以下任何一个数据

1.{“值”:“ve”}

2.{“值”:[“ve”,“ff”]}

3.{“值”:[1,2]}

4.{“值”:3}


如何解组golang的结构?

最简单的方法就是在结构中使用接口{}。见:

package main

import (
    "encoding/json"
    "fmt"
)

type decoded struct {
    Value interface{}       `json:"value"`
}

func decode(jstr string) {
    var val decoded
    json.Unmarshal([]byte(jstr), &val)
    fmt.Printf("%v\n", val.Value)
}

func main() {
    decode(`{"value": "ve"}`)
    decode(`{"value": ["ve","ff"]}`)
    decode(`{"value": [1,2]}`)
    decode(`{"value": 3}`)
}
您可能需要将其与或(正如我上面所做的)fmt.Sprintf()或类似文件中的内容结合起来,才能真正获取数据。然而,这足以解码并放入一个结构中:

$ ./spike 
ve
[ve ff]
[1 2]
3
或者干脆用简单的。