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.