Как корректно извлечь информацию из файла в формате JSON?

Как можно эффективно распарсить JSON в Golang, чтобы получить значения total, page и products, которые должны быть возвращены в виде типа []map[string]interface{}? Как можно получить total из "query_total" и "query", а затем вернуть ответ, похожий на представленный пример на Python, включая обработку возможного пустого значения total?
  • 20 марта 2024 г. 19:59
Ответы на вопрос 2
Для извлечения информации из файла в формате JSON с помощью Golang можно использовать стандартную библиотеку encoding/json. Вот пример кода, который показывает как распарсить JSON и получить нужные значения:

```go
package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
)

func main() {
	data, err := ioutil.ReadFile("data.json")
	if err != nil {
		fmt.Println("Error reading file:", err)
		return
	}

	var result map[string]interface{}
	err = json.Unmarshal(data, &result)
	if err != nil {
		fmt.Println("Error parsing JSON:", err)
		return
	}

	total := result["query_total"].(float64)
	page := result["query"].(float64)
	products := result["products"].([]interface{})

	fmt.Println("Total:", total)
	fmt.Println("Page:", page)
	fmt.Println("Products:", products)
}
```

С учетом файла data.json вида:

```json
{
	"query": 1,
	"query_total": 100,
	"products": [
		{"id": 1, "name": "Product 1"},
		{"id": 2, "name": "Product 2"}
	]
}
```

Этот код читает файл data.json, распарсивает его как JSON и затем извлекает значения total, page и products.

Чтобы обработать возможное пустое значение total, вы можете добавить дополнительную проверку, например:

```go
var total float64
totalVal, ok := result["query_total"].(float64)
if ok {
    total = totalVal
} else {
    total = 0
}
```

Этот код проверяет, есть ли значение query_total в JSON и, если нет, устанавливает total в 0.

Надеюсь, это поможет вам успешно распарсить JSON в Golang и извлечь нужные значения.
В правый столбик тут нужно кинуть JSON а в левом будет сгенерирована нужная структура, которую можно будет использовать для маршалинга/анмаршалинга
Похожие вопросы