Rust serde_json , jsonからvec変換と 繰り返し処理の例 #Rust


■ 概要:

Rust のjson から デコード(deserialized)
vec 変換等のメモとなります

■ 環境

Rust
rustc 1.46.0
cargo 1.46.0

■ コード例

https://gist.github.com/kuc-arc-f/e381dbcf52ba9b652c2f8778dca47db3

・行の部分は structに設定しています


// Rust serde_json , jsonからvec変換と 繰り返し処理の例
//
// [dependencies]
// serde = { version = "1.0", features = ["derive"] }
// serde_json = "1.0"

use serde::{Deserialize, Serialize};
use serde_json::{Result, Value};


fn type_of<T>(_: T) -> &'static str {
   std::any::type_name::<T>()
}

#[derive(Serialize, Deserialize, Debug)]
struct Point {
   name: String,
   age: i32,
}
//
pub fn test() -> Result<()>{
   let data = r#"
   [
       {
           "name": "John Doe",
           "age": 43
       },
       {
           "name": "Joh-2",
           "age": 23
       },
       {
           "name": "Joh-3",
           "age": 28
       }
   ]
   "#; 
   let deserialized: Vec<Point> = serde_json::from_str(data).unwrap();
   //println!( "{:?}"  , deserialized );
   for row in &deserialized {
       println!("name={}", row.name );
       println!("age={}", row.age );
   }     

   Ok(())
}

//
fn main() {
   test();
}

■ Cargo.toml

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"



この記事が気に入ったらサポートをしてみませんか?