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

Go Array SAINGING MULTYPE Метод данных

Опубликовано в 2025-04-17
Просматривать:341

How to Unmarshal a Go Array with Disparate Data Types?

unmarshalling массив разнородных типов в go

При обращении с ключевыми парами, Unmarshalling является простым. Тем не менее, разветвление массива смешанных типов в отдельном порядке представляет собой проблему. Решение этой проблемы требует решения, которое может приспособить различные типы данных гибким образом. Используя тип интерфейса {} в сочетании с утверждением типа, мы можем динамически проанализировать базовый тип каждого элемента массива и unmarshal соответственно. импорт ( "Кодирование/json" "FMT" ) func decodejson (f interface {}) { Switch vf: = f. (type) { Case Map [String] интерфейс {}: fmt.println ("это карта:") для k, v: = range vf { CheckTypeAndDecode (K, V) } case [] интерфейс {}: fmt.println ("это массив:") для k, v: = range vf { CheckTypeAndDecode (K, V) } } } func checktypeanddecode (k string, v interface {}) { Switch vv: = v. (type) { Строка корпуса: fmt.printf (" %V: is string - %Q \ n", k, vv) случай int: fmt.printf (" %V: IS int - %Q \ n", k, vv) по умолчанию: fmt.printf ("%V:", k) decodejson (v) } } func main () { my_json: = `{ "an_array": [ "с строкой_а", { "и": "some_more", «Разное»: [«Вложенные», «Типы»] } ] } ` var f интерфейс {} err: = json.unmarshal ([] byte (my_json), & f) Если ошибка! = nil { fmt.println (err) } еще { fmt.println ("json:") decodejson (f) } }

В этом модифицированном коде используется функция Decodejson для рекурсивного анализа структуры JSON, идентифицируя тип данных каждого элемента и печать соответствующего представления. Для сложных вложенных структур выполняются вложенные вызовы в Decodejson. карта: an_array: это массив: 0: is String - "with_a String" 1: карта: и: это строка - "some_more" Разное: это массив: 0: это строка - "вложенное" 1: is String - "types"

]

. С этим улучшенным пониманием обработки типа вы можете с уверенностью Unmarshal массивы, содержащие гетерогенное сочетание типов данных, обеспечивая точное и последовательное представление данных в ваших приложениях.

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

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

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

Copyright© 2022 湘ICP备2022001581号-3