Cargo.toml
[package]
name = "rust-example10"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
hex = "0.4.2"
serde = { version = "1.0.133", features = ["derive"] }
serde_json = "1.0.75"
main.rs
#![allow(non_snake_case)]
// #![allow(unused)]
use std::str::from_utf8;
use serde::Serialize;
use serde::Deserialize;
fn main() {
// 将十六进制字节串String转换为字节数组Vec<u8>
// 此十六进制字节串由python生成
let xx1 = hex::decode ("7b0a20202020226e5f6c61796572223a20382c0a20202020224c223a205b0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e300a202020205d2c0a2020202022456d6d223a205b0a20202020202020205b0a202020202020202020202020393835352c0a20202020202020202020202031323030302c0a20202020202020202020202031313030302c0a202020202020202020202020393030302c0a20202020202020202020202031333030302c0a20202020202020202020202031333030302c0a2020202020202020202020203732302c0a20202020202020202020202034302e380a20202020202020205d0a202020205d2c0a20202020226d75223a205b0a2020202020202020302e32352c0a2020202020202020302e32352c0a2020202020202020302e32352c0a2020202020202020302e342c0a2020202020202020302e32352c0a2020202020202020302e32352c0a2020202020202020302e33352c0a2020202020202020302e340a202020205d2c0a202020202268223a205b0a2020202020202020302e30342c0a2020202020202020302e30362c0a2020202020202020302e30382c0a2020202020202020302e312c0a2020202020202020302e31382c0a2020202020202020302e31382c0a2020202020202020302e320a202020205d2c0a202020202250223a20302e372c0a202020202251223a20302c0a202020202261223a20302e313036352c0a202020202270223a205b0a2020202020202020302e370a202020205d2c0a202020202271223a205b0a2020202020202020300a202020205d2c0a202020202278785f223a205b0a2020202020202020302c0a2020202020202020300a202020205d2c0a202020202279795f223a205b0a20202020202020202d302e31353937352c0a2020202020202020302e31353937350a202020205d2c0a20202020226e5f64223a2035302c0a202020202275707065725f68223a203430302c0a20202020226e5f69223a203230302c0a20202020226e5f736572696573223a20312c0a20202020227878223a205b0a2020202020202020302e3030312c0a2020202020202020302e3030312c0a2020202020202020302e3030312c0a2020202020202020302e3030310a202020205d2c0a20202020227979223a205b0a2020202020202020302e3030312c0a2020202020202020302e3032363632352c0a2020202020202020302e3035342c0a2020202020202020302e31353937350a202020205d2c0a20202020227a7a223a205b0a2020202020202020302c0a2020202020202020302e30312c0a2020202020202020302e30342c0a2020202020202020302e30342c0a2020202020202020302e32382c0a2020202020202020302e32380a202020205d2c0a20202020224e4e223a205b0a2020202020202020312c0a2020202020202020312c0a2020202020202020312c0a2020202020202020322c0a2020202020202020342c0a2020202020202020350a202020205d0a7d").unwrap(); // 将bites转换为Vec<u8>
println!("{:?} \n",xx1);
// 将字节数组Vec<u8>转换为json字符串String
let xx2 = from_utf8(&xx1).unwrap();
println!("{:?} \n",xx2);
// 将json字符串String转换为rust结构体Structure:方法一
let v1: serde_json::Value = serde_json::from_str(xx2).unwrap();
println!("n_layer = {}", v1["L"]);
// 将json字符串String转换为rust结构体Structure:方法二--序列化与反序列化
let deserialized:InputData = serde_json::from_str(&xx2).unwrap();
println!("{:?}",deserialized);
println!("{:?}",deserialized.n_layer);
println!("{:?}",deserialized.xx_);
}
#[derive(Serialize, Deserialize,Debug)]
struct InputData {
n_layer: i32,
L: Vec<f64>,
Emm: Vec<Vec<f64>>,
mu: Vec<f64>,
h: Vec<f64>,
P: f64,
Q: f64,
a: f64,
p: Vec<f64>,
q: Vec<f64>,
xx_: Vec<f64>,
yy_: Vec<f64>,
n_d: i32,
upper_h: f64,
n_i: i32,
n_series: i32,
xx: Vec<f64>,
yy: Vec<f64>,
zz: Vec<f64>,
NN: Vec<i32>,
}