Asosiy qismga oʻtish

JSON dan TypeScript, Go, Python va boshqa turlar

JSON namunalarini joylashtiring va TypeScript interfeyslari, Zod sxemalari, Go struct, Python, Java, C#, Kotlin, Swift hamda Rust turlarini oling — hammasi brauzeringizda yaratiladi.

Bir nechta namuna (ketma-ket yoki JSON Lines) va massiv ichidagi obyektlar birlashtiriladi: biror joyda yoʻq kalitlar ixtiyoriy, null qiymatlar esa nullable boʻladi.

TypeScript
Namunani joylashtiring va “Turlarni yaratish”ni bosing.
Eʼlon qilish usuli
Brauzeringizda ishlaydi · yuklanmaydiQanday ishlaydi

JSON dan turlar: foydalanish tartibi

  1. 1

    JSON namunalarini joylang

    Bitta javobni, yozuvlar massivini yoki ketma-ket bir nechta javobni joylashtiring; “Namuna” birlashtirilgan ikki foydalanuvchini koʻrsatadi.

  2. 2

    Tilni tanlang

    TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift yoki Rust ni va uning uslub sozlamalarini tanlang.

  3. 3

    Asosiy turga nom bering

    Yuqori darajadagi turning nomini yozing, masalan, User yoki OrderResponse.

  4. 4

    Yarating va nusxalang

    “Turlarni yaratish”ni bosing, soʻng kodni nusxalang yoki yuklab oling; tahrirlasangiz, kod avtomatik qayta yaratiladi.

Cheklovlar va Pro

Bepul, roʻyxatdan oʻtishsiz: 9 ta chiqish tili va 3 xil Python uslubi, istalgancha birlashtiriladigan namuna, 20 MB gacha fayllar; yaratish 30 soniyadan keyin toʻxtatiladi.

Pro reklamani olib tashlaydi; generator barcha tariflarda bir xil ishlaydi. Pro tarifini koʻrish

JSON dan turlar haqida

API javobi uchun turlarni qoʻlda yozish sekin va xatoga moyil, ayniqsa maʼlumot uch daraja ichma-ich boʻlsa. Bir yoki bir nechta JSON namunasini joylashtiring: generator tuzilmani aniqlaydi va toʻqqiz xil koʻrinishda tayyor taʼriflar yozadi — TypeScript interfeyslari yoki type taxalluslari, ishlash vaqtida tekshirish uchun Zod sxemali TypeScript, Go uchun json teglari bilan struct, Python uchun dataclass, TypedDict yoki Pydantic v2 modellari, Java uchun Jackson annotatsiyali record, C# uchun System.Text.Json klasslari, Kotlin uchun kotlinx.serialization data class, Swift uchun Codable struct va Rust uchun serde struct.

Bitta namuna kamdan-kam hollarda barcha maydonlarni koʻrsatadi, shuning uchun generator nechta bersangiz, hammasini birlashtiradi. Hujjatlarni ketma-ket, JSON Lines koʻrinishida yoki obyektlar massivi sifatida joylang: baʼzi obyektlarda yoʻq kalit ixtiyoriy, baʼzan null boʻladigan kalit nullable, goh butun, goh kasr boʻlgan son float boʻladi, rostdan aralash qiymatlar esa union yoki tilning dinamik JSON turiga aylanadi. Ichki obyektlar oʻz nomli turini oladi — orders dan Order, addresses dan Address — bir xil shakllar esa bir marta yaratilib, qayta ishlatiladi. Kalitlari son, UUID yoki sana boʻlgan obyektlar map ga aylanadi.

Maydon nomlari har bir tilning odatiga moslanadi, first-name yoki class kabi farq qiladigan JSON kalitlari esa tegishli annotatsiya, alias yoki CodingKeys bilan asl nomiga bogʻlanadi. Namunadagi izohlar va oxirgi vergullar xato hisoblanmaydi.

Natija faqat siz bergan namunalarni tasvirlaydi: generator namunada boʻlmagan maydon yoki qiymatlarni bila olmaydi, shuning uchun koddan foydalanishdan oldin uni API hujjatlari bilan solishtiring.

Maxfiylik

Namunalar shu oynadagi alohida oqimda (Web Worker) tahlil qilinadi va kod ham oʻsha yerda yaratiladi, shuning uchun shaxsiy yoki ichki maʼlumotli API javoblari hech qayerga yuklanmaydi. Lokal xotirada faqat til va nomlash sozlamalari saqlanadi, siz joylagan JSON esa saqlanmaydi.

Imkoniyatlar

Koʻp namunani birlashtiradi

Barcha joylangan namunalar boʻyicha yetishmagan kalitlar ixtiyoriy, null qiymatlar esa nullable boʻladi.

9 ta til

TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift va Rust — har biri oʻz nomlash odati bilan.

Kalitlar moslanadi

json teglari, alias, @SerialName, @JsonProperty va CodingKeys asl JSON nomlarini saqlab qoladi.

JSON dan turlar: koʻp beriladigan savollar

Qaysi maydon ixtiyoriy ekanini qanday aniqlaydi?
Oʻsha joydagi obyektlardan kamida bittasida kalit boʻlmasa, maydon ixtiyoriy hisoblanadi. Bitta obyekt joylasangiz, aksini koʻrsatadigan narsa yoʻqligi uchun barcha maydonlar majburiy boʻladi. Qaysi kalitlar goh bor, goh yoʻqligini generator koʻrishi uchun bir nechta haqiqiy javob yoki yozuvlar massivini joylang. Qisman yoki patch soʻrovlar uchun “Barcha maydonlar ixtiyoriy” sozlamasi bor.
Qiymat baʼzan null boʻlsa nima boʻladi?
Maydon nullable boʻladi: TypeScript da string | null, Go da koʻrsatkich, Python da str | None, Kotlin va Swift da String?, Rust da Option<String>, Java va C# da esa boxed yoki nullable tur. Barcha namunalarda null boʻlgan maydonning turini aniqlab boʻlmaydi, shuning uchun u tilning nomaʼlum yoki dinamik JSON turiga aylanadi.
Nega butun sonlarim float boʻlib qoldi?
Bir namunada maydon 7, boshqasida 7.5 boʻlsa, tur ikkalasini ham sigʻdirishi kerak, shuning uchun u float yoki double boʻladi. 10.0 kabi nuqta bilan yozilgan sonlar ham kasr hisoblanadi. TypeScript da ikkalasi ham number; Zod da esa faqat butun sonli maydon z.number().int() bilan tekshiriladi.
Bu quicktype bilan bir xilmi?
U xuddi shu muammoni oʻz generatori bilan hal qiladi, toʻliq brauzeringizda ishlaydi va bir nechta qoʻshimcha beradi: TypedDict bilan birga uchta Python uslubi, Zod sxemalari va joylangan bir nechta hujjatni birlashtirish. quicktype koʻproq tillarni qoʻllaydi va JSON Schema ni oʻqiy oladi. Bu yerdagi toʻqqiz til uchun natija qoʻshimcha yordamchi kutubxonasiz kompilyatsiya qilinadigan qilib yoziladi.
Sana, enum yoki UUID larni taniydimi?
Yoʻq. Satrlar satr boʻlib qoladi, chunki bir nechta namuna kelajakdagi har bir qiymat sana yoki belgilangan roʻyxatdan biri boʻlishini isbotlay olmaydi. API buni kafolatlagan joylarda yaratilgan turni qoʻlda Date, time.Time, datetime, enum yoki UUID turiga oʻzgartiring. Istisno — kalitlari UUID, son yoki sana boʻlgan obyektlar: ular map ga aylanadi.