在goalng

时间:2017-12-27 06:15:41

标签: go

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

1. {“value”:“ve”}

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

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

4. {“value”:3}

如何解组golang的结构?

1 个答案:

答案 0 :(得分:3)

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

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}`)
}

您可能需要将其与the reflect package中的内容或(如上所述)fmt.Sprintf()或类似内容相结合,以实际获取您的数据。然而,这足以解码并放入一个结构:

$ ./spike 
ve
[ve ff]
[1 2]
3