我有JSON密钥,它将包含以下数据中的任何一个。
1. {“value”:“ve”}
2. {“value”:[“ve”,“ff”]}
3. {“value”:[1,2]}
4. {“value”:3}
如何解组golang的结构?
答案 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