Как преобразовать JSON в ассоциативный / индексированный массив - PullRequest
0 голосов
/ 09 ноября 2018

Учитывая это JSON

{
  "users": [
    {
      "name" : "Elliot",
      "type" : "Reader",
      "age" : 23,
      "social" : {
        "facebook" : "https://facebook.com",
        "twitter" : "https://twitter.com"
      }
    },
    {
      "name" : "Fraser",
      "type" : "Author",
      "age" : 17,
      "social" : {
        "facebook" : "https://facebook.com",
        "twitter" : "https://twitter.com"
      }
    }
  ]
}

Мне нужна функция / библиотека, чтобы вернуть map , чтобы сделать myMap[0].name, чтобы получить значение "Elliot". Есть кто-нибудь, кто может мне помочь? Спасибо.

1 Ответ

0 голосов
/ 10 ноября 2018

Я хочу получить доступ к этому полю в очень красивом ассоциативном массиве обозначений, таком как Res ["users"] [0] .Name или что-то в этом роде.

Как уже упоминалось в комментариях, возможно, самый хороший способ будет использовать структуры

type User struct {
    Name   string `json:"name"`
    Type   string `json:"type"`
    Age    int    `json:"age"`
    Social struct {
        Facebook string `json:"facebook"`
        Twitter  string `json:"twitter"`
    } `json:"social"`
}
type Config struct {
    Users []User `json:"users"`
}


rawJSON := []byte(`{...your config JSON in here...}`)

config := Config{}
if err := json.Unmarshal(rawJSON, &config); err != nil {
    log.Fatal(err)
}

user := config.Users[0]

fmt.Printf(
    "name: %s, type: %s, age: %d, facebook: %s, twitter: %s\n",
    user.Name,
    user.Type,
    user.Age,
    user.Social.Facebook,
    user.Social.Twitter,
)

Результат:

name: Elliot, type: Reader, age: 23, facebook: https://facebook.com, twitter: https://twitter.com

Игровая площадка Go

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...