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
.