JSONオブジェクト、またはオブジェクトの配列を、TypeScriptのinterface、Pythonクラス、Pydanticモデル、またはSQLにします。整形は JSONフォーマッター
APIの見本は、多くの場合JSONオブジェクト1件、またはオブジェクトの並びです。このページはその形からTypeScriptのinterface、Pythonクラス、Pydanticモデルを書くか、オブジェクトごとにCREATE TABLEとINSERTを1件書きます。整形と修復はJSONフォーマッターにあります。
{"id":1,"name":"Ada","ok":true,"tags":["a","b"],"meta":{"n":2}}を入れ、向きをTypeScript interface、名前を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 interfaceのままです。ルートはオブジェクト1件、またはオブジェクトの配列である必要があります。数値、文字列、数値の配列はエラーで止まります。キーのないオブジェクトもエラーで止まります。
TypeScriptではboolean、number、stringを使います。そのいずれかの配列はT[]になります。空の配列はunknown[]になります。入れ子のオブジェクトは別のinterfaceになります。親の名前にキーを足すので、Itemの下のmetaはItemMetaです。混在した型はunknownになります。省略可能なプロパティはすべてのフィールドに?を付けます。ルートが配列で、一部のオブジェクトにキーがないときは、省略可能なプロパティがオフでもそのフィールドは省略可能です。exportはexport interfaceと書きます。配列のルートにはコメント// JSON root is Name[]が付きます。
SQLは名前を小文字にし、それ以外の文字をアンダースコアにします。そのためOrder Lineはorder_lineになります。整数はBIGINT、それ以外の数値はDOUBLE、真偽値はBOOLEANで1または0と書き、文字列はTEXTです。入れ子のオブジェクトや配列は、JSONのテキストを入れたTEXTです。文字列の中の単一引用符は二重にします。キーがnull、またはいずれかの行にない場合はNULLを許します。オブジェクト1件がINSERT 1件です。
オブジェクトなので、TypeScriptではItemMetaという名前になります。SQLでは同じフィールドが{"n":2}を含むTEXTです。
オブジェクト1件が1行になります。数値の並びには列がありません。