Как считать JSON в виде массива, а не строки?

При реализации проекта возникла проблема, я не могу присвоить структуру каждому ключу из JSON, так как он представлен в виде одного большого объекта. Пример файла:

{
    "the": "зэ",
    "these": "зис",
    "those": "зос",
    "them": "зэм",
    "they": "зэй",
    "that": "зэт",
    "than": "зэн",
    "then": "зен",
    "thus": "зис",
    "again": "эгэйн",
    "ache": "эйк",
    "ancient": "эйшент",
    "bass": "бас",
    "haste": "хасл",
    "taste": "тэйст",
    "waste": "вейст",
    "bathe": "баф",
    "atom": "атом",
    ...
}

Возникает следующая проблема: При попытке сериализовать файл, после преобразования переменной в строку, я не могу извлечь данные из индекса так, как мне нужно. То есть я не могу обратиться к отдельным ключам и значениям, поскольку в итоге получается просто строка, а не массив объектов. Пример моего (жалкого) кода:

num, err := os.ReadFile("json/exceptionsList.json") // читаю файлик
if err != nil {
    fmt.Print("error step1")
    return
}

jsonData, err := json.Marshal(num) // перевожу данные в биты 

if err != nil {
    fmt.Print("error step2")
    return
}

fmt.Print(string(jsonData))
  • Как можно прочитать json как массив, а не как строку?
  • Существует ли способ, помимо for .. range, обращения к ключам и значениям файла?

Ответы (1 шт):

Автор решения: чистов_n

Это делается вот так:

num, err := os.ReadFile("json/exceptionsList.json")
if err != nil {
    fmt.Print("error step1")
    return
}

var value map[string]string

json.Unmarshal(num, &value)

Теперь value это мап полученный из json'а.

Про Unmarshal в документации.

→ Ссылка