«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу демаршалировать неизвестные форматы JSON в Go?

Как я могу демаршалировать неизвестные форматы JSON в Go?

Опубликовано 23 декабря 2024 г.
Просматривать:400

How Can I Unmarshal Unknown JSON Formats in Go?

Демаршалинг данных JSON неизвестного формата

Введение

Ваши данные JSON соответствуют неизвестному формату, что представляет собой проблему при демаршалинге его в структуру GoLang. В этой статье вы узнаете, как эффективно справиться с этим сценарием.

Демаршалирование с помощью интерфейса карты[string]{}

Поскольку вы не знаете ключи в заранее вы можете использовать map[string]interface{} для демаршалинга полезных данных JSON. Это позволяет хранить пары ключ-значение в виде карты без указания типов значений.

var grades map[string]interface{}

err := json.Unmarshal([]byte(jsonString), &grades)
fmt.Println(err)

fmt.Printf("%#v\n", grades)

Это выведет данные JSON в виде вложенной карты строк в интерфейсы, что может быть полезно для динамической проверки и обработки данных.

Используя тег json:"-"

Вы можете исключить определенные поля из JSON маршалинг/демаршалинг с использованием тега json:"-". Это может быть полезно, если вы хотите сохранить конфиденциальность некоторых данных или избежать циклических ссылок.

type GradeData struct {
    Grades map[string]interface{} `json:"-"`
}

var gradesData GradeData
err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)
fmt.Println(err)

fmt.Printf("%#v\n", gradesData)

В этом примере поле Grades не будет включено в JSON-представление GradesData, но его все равно можно использовать для хранения и извлечения JSON. данные.

Вывод

Используя интерфейс карты[строка]{} и json:"-" вы можете успешно демаршалировать данные JSON неизвестного формата в структуры GoLang. Этот подход позволяет элегантно обрабатывать динамические и неизвестные структуры JSON.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3