我想尝试从Go中的JSON获取键值,但是我不确定该怎么做。
我已经能够使用simplejson来读取json值,但是我却无法找出如何获取键值。
谁能指出正确的方向和/或帮助我?
谢谢!
您可以通过执行以下操作来获取JSON结构的顶级密钥:
package main import ( "encoding/json" "fmt" ) // your JSON structure as a byte slice var j = []byte(`{"foo":1,"bar":2,"baz":[3,4]}`) func main() { // a map container to decode the JSON structure into c := make(map[string]json.RawMessage) // unmarschal JSON e := json.Unmarshal(j, &c) // panic on error if e != nil { panic(e) } // a string slice to hold the keys k := make([]string, len(c)) // iteration counter i := 0 // copy c's keys into k for s, _ := range c { k[i] = s i++ } // output result to STDOUT fmt.Printf("%#v\n", k) }
请注意,键的顺序不得与JSON结构中的键顺序相对应。它们在最后一片中的顺序甚至会在完全相同的代码的不同运行之间有所不同。这是由于地图迭代的工作原理。