Razvoj / Tipovi

Konverter iz JSON-a u Rust strukture

Pretvorite JSON uzorak u Rust strukture sa serde atributima Serialize i Deserialize, poljima u snake_case formatu, preimenovanjima, Option tipom za nedostajuće ili null ključeve i Vec tipom za nizove.

Konverter iz JSON-a u Rust strukture: Svaki objekat postaje struktura sa javnim poljima. Ključevi se pretvaraju u snake_case, uz #[serde(rename = "…")] kada se način pisanja u JSON-u razlikuje, a Rust ključne reči, kao što je type, postaju sirovi identifikatori (r#type), koje serde automatski mapira nazad. Ključevi koji nedostaju ili imaju vrednost null u nekim zapisima postaju Option<T>, a vrednosti bez jasno određenog tipa postaju serde_json::Value. Izlaz za nekoliko uzoraka je kompajliran, a njegov uzorak je deserijalizovan pomoću serde 1. Radi 100% lokalno u vašem pregledaču, bez otpremanja datoteka na server.

Pokretanja
U vašem pregledaču
Trošak
Besplatno · bez registracije
Dostupnost
Spremno za upotrebu
JSON u RustLokalna obrada

U potpunosti radi u vašem pregledaču

Rust

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Address {
    pub city: String,
    pub zip_code: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
    pub id: i64,
    pub user_name: String,
    pub avatar_url: String,
    pub score: f64,
    pub tags: Vec<String>,
    pub address: Address,
    pub manager_id: Option<i64>,
    #[serde(default)]
    pub nickname: Option<String>,
}

pub type UserList = Vec<User>;

Zahteva crate-ove serde (sa funkcijom derive) i serde_json. Nazivi polja postaju snake_case, uz #[serde(rename)] kada se ključ razlikuje; ključevi koji nedostaju ili su null u nekim objektima postaju Option. Brojevi su i64 osim ako uzorak sadrži razlomak.

Čitanje i upisivanje podataka

Deserijalizujte pomoću serde_json::from_str::<Root>(&text)? a serijalizujte pomoću serde_json::to_string(&value)?. Nepoznati ključevi u ulazu se podrazumevano ignorišu; dodajte #[serde(deny_unknown_fields)] strukturi da biste ih odbili.

Za isti primer u Go jeziku pogledajte JSON u Go; za sređivanje primera pre toga koristite Formatiranje JSON-a.

Opcije i nedostajući ključevi

Nedostajući ključ i vrednost null deserijalizuju se u None za polje tipa Option. Ako treba da ih razlikujete, koristite Option<Option<T>> sa paketom serde_with ili zadržite serde_json::Value za to polje.

Kako se koristi

  1. Nalepite JSON uzorak, idealno niz sa nekoliko tipičnih zapisa.
  2. Zadajte naziv tipa najvišeg nivoa i izaberite da li polja sa vrednošću None treba izostaviti prilikom serijalizacije.
  3. Kopirajte strukture u svoj crate, kojem su potrebni serde i serde_json.

Privatnost i ograničenja

JSON se konvertuje u vašem pregledaču i nikada se ne otprema.

Srodne alatke

Često postavljana pitanja

Koji crate-ovi su mi potrebni?

serde sa funkcijom derive i serde_json: serde = { version = "1", features = ["derive"] } i serde_json = "1" u datoteci Cargo.toml.

Zašto i64 i f64?

Oni bezbedno mogu da sadrže bilo koji JSON broj. Ako znate opseg vrednosti, suzite ih na u32, u8 ili f32.

Mogu li umesto toga da koristim #[serde(rename_all)]?

Da: ako svaki ključ koristi istu konvenciju, kao što je camelCase, jedan #[serde(rename_all = "camelCase")] na strukturi zamenjuje pojedinačna preimenovanja.

Besplatan alat · pokretanja: u vašem pregledaču · nalog nije potreban