Как конвертировать Vec в JsonValue в Rust - PullRequest
0 голосов
/ 17 мая 2019

Я запрашиваю свою базу данных и получаю структуру Vec<Bookable>, используя дизельную библиотеку.

#[derive(QueryableByName)]
pub struct Bookable {
  #[sql_type = "BigInt"]
  pub id: i64,
  #[sql_type = "Text"]
  pub title: String
}

Когда я запрашиваю элементы, я могу получить доступ к результату, но невозможно преобразовать макрос Vec<Bookable> в json!:

pub fn get_terms(conn: &MysqlConnection) -> Vec<Bookable> {
  diesel::sql_query(r#"SELECT title, LAST_INSERT_ID() 'id' from bookable_term;"#)
    .load::<Bookable>(conn).expect("Query failed")
}

И позже я называю это так:

  let conn = connect();
  let terms = bookable::get_terms(&conn);
  json!({ "data": {
    "items": terms }
  })

Вопрос в том, как поместить термины в этот объект и отправить весь массив в API? Я могу привести в порядок json как это:

"items:" &vec!["to", "be", "or", "not", "to", "be"]

Но когда дело доходит до существующего Vec, я получаю ошибку компилятора. Я использую Rocket, поэтому он предоставляет rocket_contrib::json::JsonValue, который содержит json! macro

...