Skip to content

JSON Marshal: обработка типов данных

Как мы узнали, JSON поддерживает в основном шесть типов данных, string, number, boolean, null, array и object. Это может быть хорошей новостью для разработчика JavaScript, потому что в JavaScript предполагаются все типы данных, но в Go нам нужно учитывать различные типы данных при кодировании.

  1. Number: int или float. 

  2. String: string значение (необработанный или интерпретированный строковый литерал) очищается и кодируется как JSON string. Подробнее о процессе очистки читайте в этой документации о функции Marshal. Значение []byte кодируется как строка Base64.

  3. Boolean: bool значение кодируется как boolean значение JSON.

  4. Null: nil значение (например, указатель, интерфейс или другие типы данных) кодируется как null значение JSON.

  5. Object: значение map или struct значение закодировано как object значение JSON.

  6. Array: значение array или slice значение кодируется как array значение JSON, за исключением слайса байтов ([]byte).

Помимо этих встроенных типов данных, другие типы данных, такие как func, chan, complex64/128 не могут быть преобразованы в значения JSON. Попытка маршалировать объект, который содержит эти типы данных, вызовет ошибку, за исключением случаев, когда поле безоговорочно опущено с использованием тега.