Transforme um objeto JSON, ou um array de objetos, numa interface TypeScript, numa classe Python, num modelo Pydantic ou em SQL. A formatação continua no formatador JSON
Uma amostra de API costuma ser um objeto JSON, ou um array de objetos. Esta página escreve uma interface TypeScript, uma classe Python, um modelo Pydantic, ou um CREATE TABLE e um INSERT por objeto. A formatação e o reparo continuam no formatador JSON.
{"id":1,"name":"Ada","ok":true,"tags":["a","b"],"meta":{"n":2}}, põe Sentido em Interface TypeScript, Nome em Item e deixa as duas caixas marcadas. O resultado tem export interface Item com id?: number, name?: string, ok?: boolean, tags?: string[] e meta?: ItemMeta, mais export interface ItemMeta com n?: number.item. As colunas são id BIGINT NOT NULL, name TEXT NOT NULL, ok BOOLEAN NOT NULL, tags TEXT NOT NULL e meta TEXT NOT NULL. O INSERT é 1, 'Ada', 1, '["a","b"]', '{"n":2}'.from dataclasses import dataclass e from typing import Optional, List, depois a classe @dataclass ItemMeta com n: Optional[int] = None, depois a classe @dataclass Item com id, name, ok, tags: Optional[List[str]] = None e meta: Optional[ItemMeta] = None. Mude Sentido para Modelo Pydantic: os imports acrescentam from pydantic import BaseModel e ambas as classes estendem BaseModel, sem @dataclass. Mostrar exemplo fica em Interface TypeScript.A raiz tem de ser um objeto, ou um array de objetos. Um número, uma cadeia ou um array de números para com um erro. Um objeto sem chaves para com um erro.
TypeScript usa boolean, number e string. Um array de um desses tipos passa a T[]. Um array vazio passa a unknown[]. Um objeto aninhado passa a outra interface: o nome do pai mais a chave, por isso meta sob Item é ItemMeta. Tipos mistos passam a unknown. Propriedades opcionais acrescenta ? em cada campo. Se a raiz é um array e a algum objeto falta uma chave, esse campo é opcional mesmo com Propriedades opcionais desligado. export escreve export interface. Uma raiz que é array acrescenta o comentário // JSON root is Nome[].
O SQL põe Nome em minúsculas e converte os outros caracteres em sublinhados, por isso Order Line passa a order_line. Os inteiros são BIGINT, os outros números são DOUBLE, os booleanos são BOOLEAN e escrevem-se como 1 ou 0, e as cadeias são TEXT. Um objeto ou um array aninhado é TEXT com o texto JSON. Uma aspa simples dentro de uma cadeia é dobrada. Uma chave que é null, ou que falta em alguma linha, aceita NULL. Cada objeto é um INSERT.
É um objeto, por isso TypeScript chama-lhe ItemMeta. No SQL esse mesmo campo é TEXT com {"n":2}.
Cada objeto vira uma linha. Um array de números não tem colunas.