一尘不染

如何在Go中从json字符串获取键值

go

我想尝试从Go中的JSON获取键值,但是我不确定该怎么做。

我已经能够使用simplejson来读取json值,但是我却无法找出如何获取键值。

谁能指出正确的方向和/或帮助我?

谢谢!


阅读 972

收藏
2020-07-02

共1个答案

一尘不染

您可以通过执行以下操作来获取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结构中的键顺序相对应。它们在最后一片中的顺序甚至会在完全相同的代码的不同运行之间有所不同。这是由于地图迭代的工作原理。

2020-07-02