Практика на JSON в Rust
В этих задачах потренируем метки полей,
запись и чтение, списки и карты на
маленьких примерах в одном main.rs.
Дана структура:
struct Item {
name: String,
qty: i32,
}
Соберите строку для имени "pen"
и количества 3, выведите ее
и разберите исход операции обратно
в Item.
Дана строка:
let text = r#"{"name":"disk","qty":2}"#;
Объявите Item с полями name
и qty, прочитайте text
и выведите имя и число.
Даны типы:
struct Meta {
ver: i32,
}
struct Pack {
meta: Meta,
tags: Vec<String>,
}
Соберите строку для версии 1
и тегов "a" и "b",
затем выведите результат.
Дана строка:
let text = r#"{"meta":{"ver":2},"tags":["x"]}"#;
Прочитайте текст в Pack с полями
meta и tags и выведите
версию и длину списка тегов.
Дана структура:
struct Row {
title: String,
note: Option<String>,
}
Настройте пропуск пустого note,
соберите строку для заголовка "log"
и None в примечании; скажите,
будет ли ключ "note" в тексте.
Дана структура:
struct Account {
#[serde(rename = "login")]
user: String,
active: bool,
}
Прочитайте строку {"login":"kate","active":true},
выведите имя и флаг через разбор
исхода.
Дана структура:
struct Scores {
data: HashMap<String, i32>,
}
Соберите строку с картой: ключ "a"
равен 1, ключ "b" равен
2. Прочитайте текст обратно
и выведите сумму значений.
Дана строка:
let text = r#"{"items":[{"name":"a","qty":1},{"name":"b","qty":2}]}"#;
Опишите обертку со списком Item,
прочитайте text, выведите
количество элементов и имя второго.