Как преобразовать вектор кортежей в объекты JSON?

Я создаю REST API в rocket.rs и у меня есть функция, которая возвращает вектор кортежей, которые мне нужно вернуть в веб-интерфейс. Вектор имеет форму [(1, "abc"), (2, "mno"), (3, "xyz")],

Мне нужно отправить в виде списка JSON [{"score": 1, "text": "abc"}, {"score": 2, "text": "mno"}, {"score": 3, "text": "xyz"}],

Как мне это сделать в Rust? Я проверил это с помощью serde как

let my_list: Vec<(i32, String)> = vec![
    (1, "abc".to_string()),
    (2, "feg".to_string()),
    (3, "xyz".to_string()),
];
let serialized = serde_json::to_string(&my_list).unwrap();

println!("serialized = {}", serialized);

Мне нужен способ создать ключ, пары значений и конвертировать. Как это сделать?

1 ответ

Решение

Почему вы используете кортежи? Если у ваших полей кортежа есть "семантические" имена, вы должны вместо этого рассмотреть структуру, которая также должна решить вашу проблему с сериализацией:

#[derive(Clone,PartialEq,Eq,PartialOrd,Ord,Hash,Debug,Serialize,Deserialize)]
struct Entry {
    pub score: i32,
    pub text: String,
}
Другие вопросы по тегам