JSONデータを含むファイルを解析しようとしています。
[
{"a" : "1"},
{"b" : "2"},
{"c" : "3"}
]
これは動的キーを持つJSON配列であるため、使用できると思いました。
type data map[string]string
ただし、map
を使用してファイルを解析することはできません。
c, _ := ioutil.ReadFile("c")
dec := json.NewDecoder(bytes.NewReader(c))
var d data
dec.Decode(&d)
json: cannot unmarshal array into Go value of type main.data
JSONデータを含むファイルを解析する最も簡単な方法は、配列(文字列から文字列型のみ)をGo構造体に入れることですか?
編集:受け入れられた答えをさらに詳しく説明する-私のJSONがマップの配列であることは事実です。コードを機能させるには、ファイルに次のものが含まれている必要があります。
{
"a":"1",
"b":"2",
"c":"3"
}
その後、map[string]string
に読み込むことができます
Jsonは実際にはマップの配列であるが、map
にアンマーシャルしようとしているためです。以下を使用してみてください。
type YourJson struct {
YourSample []struct {
data map[string]string
}
}
これを試してください: http://play.golang.org/p/8nkpAbRzAD
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
type mytype []map[string]string
func main() {
var data mytype
file, err := ioutil.ReadFile("test.json")
if err != nil {
log.Fatal(err)
}
err = json.Unmarshal(file, &data)
if err != nil {
log.Fatal(err)
}
fmt.Println(data)
}
bitlyのsimplejsonパッケージを試すことができます
https://github.com/bitly/go-simplejson
ずっと簡単です。