Как считать 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 в документации.