JSON Marshal: обработка типов данных
Как мы узнали, JSON поддерживает в основном шесть типов данных, string, number, boolean, null, array и object. Это может быть хорошей новостью для разработчика JavaScript, потому что в JavaScript предполагаются все типы данных, но в Go нам нужно учитывать различные типы данных при кодировании.
-
Number: int или float.
-
String: string значение (необработанный или интерпретированный строковый литерал) очищается и кодируется как JSON string. Подробнее о процессе очистки читайте в этой документации о функции Marshal. Значение []byte кодируется как строка Base64.
-
Boolean: bool значение кодируется как boolean значение JSON.
-
Null: nil значение (например, указатель, интерфейс или другие типы данных) кодируется как null значение JSON.
-
Object: значение map или struct значение закодировано как object значение JSON.
-
Array: значение array или slice значение кодируется как array значение JSON, за исключением слайса байтов ([]byte).
Помимо этих встроенных типов данных, другие типы данных, такие как func, chan, complex64/128 не могут быть преобразованы в значения JSON. Попытка маршалировать объект, который содержит эти типы данных, вызовет ошибку, за исключением случаев, когда поле безоговорочно опущено с использованием тега.