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 構造内の順序と一致してはならないことに注意してください。最終スライスでの順序は、まったく同じコードの実行ごとに異なります。これは、マップの反復がどのように機能するかによるものです。
何十もの役に立たない構造体を書きたくない場合は、 https://github.com/tidwall/gjsonのようなものを使用できます。
gjson.Get(
`{"object": {"collection": [{"items": ["hello"]}]}}`,
"object.collection.items.0",
) // -> "hello"
さらに、いくつかの奇妙な便利なクエリのトリック.