Rust:
Работа с JSON

Как:

В Rust для работы с JSON обычно используются крейты serde и serde_json. Вот как их применять:

Сначала добавьте зависимости в Cargo.toml:

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

Затем импортируйте крейты и определите структуру для представления ваших данных:

extern crate serde;
extern crate serde_json;

#[macro_use]
extern crate serde_derive;

#[derive(Serialize, Deserialize, Debug)]
struct User {
    id: u64,
    name: String,
    email: String,
}

fn main() {
    // Сериализация
    let user = User {
        id: 1,
        name: "Jane Doe".to_string(),
        email: "[email protected]".to_string(),
    };
    let j = serde_json::to_string(&user).unwrap();
    println!("{}", j); // {"id":1,"name":"Jane Doe","email":"[email protected]"}

    // Десериализация
    let e: User = serde_json::from_str(&j).unwrap();
    println!("{:?}", e);  // User { id: 1, name: "Jane Doe", email: "[email protected]" }
}

Глубже:

Экосистема библиотеки serde — это фактически стандартное решение Rust для сериализации с момента его выпуска в 2015 году. Она поддерживает много форматов, помимо JSON. В качестве альтернативы вы можете встретить json-rust или simd-json, которые предлагают разные компромиссы в производительности. Важная деталь реализации, которую следует понимать, заключается в том, что десериализация serde требует, чтобы структуры данных были известны во время компиляции, что не так в более динамичных языках, как JavaScript.

Смотрите также:

  • Официальная документация Serde предоставляет исчерпывающее руководство: Документация Serde
  • Подробная информация о крейте serde_json: Крейт serde_json
  • Больше о самом JSON: Введение в JSON
  • Для асинхронного программирования с JSON часто используются tokio и async-std в связке с serde_json.