Инструменты разработчика · Конвертеры синтаксиса
От электронной таблицы CSV до API JSON: почему каждое значение поступает в виде строки
· Почему это важно
csv JSON форматы данных
Экспорт CSV из электронной таблицы теряет типы, известные электронной таблице, а API ожидает их возврата. В этом посте объясняется, почему внимательный преобразователь хранит значения в виде строк, почему гадать опасно и как подготовить файл для успешного импорта.
Импорт, который отклонил каждую строку — API, ожидающий чисел и логических значений, и тело JSON, полное «42» и «TRUE».
В схеме описан импорт API, произведенный CSV в JSON, но преобразователи синтаксиса не могут выполнить это действие. CSV помечен как нечитаемый, ни одна пара преобразования не начинается с CSV, и интерфейс никогда не предлагает его в качестве источника. Попытка запроса возвращает ошибку неподдерживаемого преобразования, а не предполагаемое JSON.
Эта поправка является центральным фактом статьи, а не упущением, которое нужно скрыть. Менеджер по продукту по-прежнему может подготовить экспорт электронной таблицы, но для анализа и ввода требуется рабочий процесс CSV, который раскрывает принятые решения. Написание вымышленных шагов для этой панели отправит читателей к элементам управления, которых не существует.
Запрошенный импорт CSV в JSON не может быть выполнен на этой панели.
Поля CSV представляют собой текстовые последовательности, разделенные и заключенные в кавычки в соответствии с диалектом. Файл не содержит форматов чисел электронных таблиц, логических типов или вложенных объектов. Он может даже не указывать свой разделитель или является ли первая запись заголовком. Эти неопределенности возникают до принятия любого решения типа JSON.
Почтовый индекс с начальным нулем, длинный идентификатор и значение, подобное дате, демонстрируют, почему автоматическое приведение рискованно. Тем не менее, «все есть строка» также требует выбора заголовка и диалекта. ToolAcre отказывается от полной операции чтения, вместо того чтобы реализовать только легкую половину и представить ее как надежную.
CSV содержит текстовые поля, но читатель все равно должен выбрать диалект и политику заголовка.
Вывод типов меняет удобство на молчаливую коррупцию. `0042` может быть кодом, `9007199254740993` превышает точную целочисленную точность JavaScript, а `N/A` может быть буквальной категорией, а не отсутствующими данными. Даты и десятичные дроби, специфичные для локали, предоставляют больше интерпретаций.
Правильные типы определяются принимающей API схемой и политикой импорта, а не внешним видом ячеек. Тщательный рабочий процесс сначала анализирует строки в соответствии с явными правилами CSV, затем преобразует выбранные поля в соответствии с этим контрактом и сообщает об ошибках построчно.
Подготовка электронной таблицы — согласованные столбцы, явное значение true/false,, отсутствие разделителей тысяч и пустые ячейки для действительно отсутствующих значений.
Подготовьте согласованный файл: одну политику заголовка, один разделитель, допустимые кавычки и документированную кодировку. Решите, чем пустые ячейки отличаются от пустых строк и нуля. Используйте явное написание true и false только в том случае, если импортер сопоставляет их таким образом; избегайте разделителей тысяч, если выбранный синтаксический анализатор диалекта и типа не ожидает их.
Это рекомендации по рабочему процессу импорта, а не функции конвертеров синтаксиса. Репозиторий указывает пользователям на инструмент CSV, поскольку он может задавать вопросы, которые этот инструмент намеренно избегает.
Подготовка CSV принадлежит инструменту, который запрашивает разделители, кавычки, заголовки и типы.
Результатом работы с точностью до кода является отказ. Вызов `convert` с CSV в качестве источника и JSON в качестве цели создает `UNSUPPORTED_CONVERSION`; подсказка объясняет, что чтение CSV требует разделителей, кавычек и решений типа. Частично преобразованного тела для последующего редактирования не существует.
Используйте CSV Cleaner для проверки и восстановления файла, а затем импортер, настройки которого соответствуют схеме API. Если данные уже представлены в виде записей JSON, поддерживаемое обратное направление может записывать CSV и обеспечивает сглаживание, нулевую неоднозначность и экранирование формул.
Рабочая граница: неподдерживаемый запрос и поддерживаемый альтернативный рабочий процесс.
Записи, разделенные точкой с запятой, часто сопровождаются десятичными запятыми, а обозначение даты зависит от локали экспортера. Синтаксический анализатор, слепо выбирающий запятую, может разделить числовые значения; предположение о типе может по-новому интерпретировать день и месяц. Кодировка символов и обработка BOM добавляют еще одну границу перед семантикой поля.
Поскольку этот маршрут не читает CSV, он не делает никаких заявлений об обработке таких случаев. Модуль записи JSON в CSV может выбрать запятую, точку с запятой или табуляцию и при необходимости добавить UTF-8 BOM, но параметры вывода не являются свидетельством наличия анализатора входных данных.
Что здесь не распространяется — вложенные структуры, которые могут потребоваться API, которые CSV не может выразить и должны быть собраны после преобразования.
CSV не может напрямую представлять вложенный объект, который может потребоваться API. Заголовки, разделенные точкой, могут быть соглашением, но они не создают объекты автоматически, если импортер не определит это правило. Массивы и повторяющиеся вложенные записи требуют явного этапа сборки.
Универсальный преобразователь синтаксиса не может вывести бизнес-структуру из плоской таблицы. Определите целевую схему JSON, сознательно сопоставьте столбцы и проверьте перед отправкой. Это интеграция приложений, а не преобразование синтаксиса.
Вывод: типы — это ваше решение, а не конвертера, и как панель конвертеров синтаксиса показывает вам JSON перед его отправкой.
Типы — это решения, подкрепленные принимающим контрактом. Отказ ToolAcre делает эти решения видимыми, вместо того, чтобы создавать правдоподобные, но рискованные JSON. Лучше остановиться, чем молча уничтожать ведущие нули или округлять идентификатор.
Используйте преобразователи синтаксиса для девяти перечисленных направлений, включая JSON-to-CSV. Для CSV-to-JSON выберите инструмент, который запрашивает диалект, заголовок и типы. Отсутствующий маршрут — это намеренная граница безопасности, а не незавершенная кнопка.
Прежде чем импортировать настоящую электронную таблицу, запишите решения, которые в противном случае скрывала бы отсутствующая кнопка: кодировка, разделитель, правило кавычек, строка заголовка, политика дублирования заголовков, значение пустой ячейки и правило типа для каждого поля назначения. Считыватель CSV, настроенный из этого списка, может создавать подотчетные JSON. Общий преобразователь, который никогда не задает эти вопросы, может выглядеть быстрее, но все сэкономленное время заимствовано из отладки идентификаторов, дат и пропущенных значений после того, как API отклоняет или неправильно их считывает.