Превратите объект JSON или массив объектов в интерфейс TypeScript, класс Python, модель Pydantic или SQL. Форматирование остаётся в форматировании JSON
Пример ответа API часто бывает одним объектом JSON или массивом объектов. Страница пишет интерфейс TypeScript, класс Python, модель Pydantic либо CREATE TABLE и один INSERT на объект. Форматирование и починка остаются в форматировании JSON.
{"id":1,"name":"Ada","ok":true,"tags":["a","b"],"meta":{"n":2}}, ставит Направление на Интерфейс TypeScript, Имя — Item и оставляет оба флажка включёнными. В результате есть export interface Item с id?: number, name?: string, ok?: boolean, tags?: string[] и meta?: ItemMeta, плюс export interface ItemMeta с n?: number.item. Столбцы: id BIGINT NOT NULL, name TEXT NOT NULL, ok BOOLEAN NOT NULL, tags TEXT NOT NULL и meta TEXT NOT NULL. INSERT — 1, 'Ada', 1, '["a","b"]', '{"n":2}'.from dataclasses import dataclass и from typing import Optional, List, затем класс @dataclass ItemMeta с n: Optional[int] = None, затем класс @dataclass Item с id, name, ok, tags: Optional[List[str]] = None и meta: Optional[ItemMeta] = None. Переключите Направление на Модель Pydantic: импорты добавляют from pydantic import BaseModel, оба класса наследуют BaseModel, без @dataclass. Показать пример остаётся на Интерфейсе TypeScript.Корень должен быть одним объектом или массивом объектов. Число, строка или массив чисел останавливаются с ошибкой. Объект без ключей останавливается с ошибкой.
TypeScript использует boolean, number и string. Массив одного из этих типов становится T[]. Пустой массив становится unknown[]. Вложенный объект становится другим интерфейсом: имя родителя плюс ключ, поэтому meta под Item — это ItemMeta. Смешанные типы становятся unknown. Необязательные свойства добавляет ? к каждому полю. Если корень — массив и в части объектов нет ключа, поле необязательно, даже когда Необязательные свойства выключены. export пишет export interface. Корень-массив добавляет комментарий // JSON root is Имя[].
SQL переводит Имя в нижний регистр и заменяет прочие символы на подчёркивания, поэтому Order Line становится order_line. Целые — это BIGINT, остальные числа — DOUBLE, логические значения — BOOLEAN и пишутся как 1 или 0, строки — TEXT. Вложенный объект или массив — это TEXT с текстом JSON. Одинарная кавычка внутри строки удваивается. Ключ со значением null или отсутствующий в какой-либо строке допускает NULL. Каждый объект — один INSERT.
Это объект, поэтому TypeScript называет его ItemMeta. В SQL то же поле — TEXT с {"n":2}.
Каждый объект становится строкой. У списка чисел нет столбцов.