Инициализация и вставка вложенных данных JSON в Golang? - PullRequest
0 голосов
/ 21 мая 2019

Я был в своем уме, пытаясь заставить это работать в течение последних 3 часов, так что, надеюсь, вы, ребята, сможете помочь мне с этим.

Я пытаюсь инициализировать вложенныйСтруктура JSON в Go и вставка данных в него.Вот структура JSON, которую я хочу обработать:

{
  "top": {
    "item1": {
      "foo": "bar"
    },
    "item2": "This is item2",
    "item3": "This is item3",
    "item4": {
      "foo2": "bar2"
    }
  }
}

Вот как я настраиваю его в Go -

package main

import (
"fmt"
)

func main() {

data := make(map[string]map[string]map[string]string) // init top level map
data["top"] = make(map[string]map[string]string)
data["top"]["item1"] = make(map[string]string)
data["top"]["item4"] = make(map[string]string)


data["top"]["item1"]["foo"] = "bar"
data["top"]["item4"]["foo2"] = "bar2"
data["top"]["item2"] = "This is item2"


fmt.Println(data)
}

Однако, если я запускаювот, я получаю эту ошибку:

не может использовать «Это item2» (строка типа) в качестве строки карты типа [строка] в присваивании

Я уверен, что яЯ делаю это слишком сложным, так что может быть более эффективным способом выразить это?

1 Ответ

2 голосов
/ 21 мая 2019

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

Подумайте об использовании такого инструмента, как json-to-go , чтобы помочь вам создать правильные объекты для данных JSON.

Примечание: Это не обеспечит идеальную структуру каждый раз - на самом деле, часто этот инструмент просто по умолчанию использует тип интерфейса, когда он не может определить правильный тип (который является не идеально), поэтому вам, вероятно, потребуется настроить вывод, но в целом он обеспечит вам хорошую отправную точку.

Рабочий пример на детской площадке

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