Подтвердить что ты не робот

Golang анализирует массив JSON в структуре данных

Я пытаюсь проанализировать файл, содержащий данные 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

4b9b3361

Ответ 1

Это потому, что ваш json на самом деле является массивом карт, но вы пытаетесь развязать только map. Попробуйте использовать следующее:

type YourJson struct {
    YourSample []struct {
        data map[string]string
    } 
}

Ответ 2

Попробуйте следующее: 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)
}