作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,我们添加了一个在* .rs脚本中使用的结构
#[derive(Serialize, Deserialize, Debug)]
struct Foo {
Output: OUTPUT,
input: INPUT,
logs: LOGS,
}
#[derive(Serialize, Deserialize, Debug)]
struct OUTPUT {
width: u32,
samplerate: u32,
}
#[derive(Serialize, Deserialize, Debug)]
struct INPUT {
fileinputuri: String,
}
#[derive(Serialize, Deserialize, Debug)]
struct LOGS {
statuslog: String,
}
这是引用
let var: Foo = serde_json::from_str(&contents).expect("error while reading json");
当我在JSON中将字段
width: u32,
更改为
n_width: u32,
时,我们将结构更改为
#[derive(Serialize, Deserialize, Debug)]
struct OUTPUT {
n_width: u32,
samplerate: u32,
}
可以将结构提取到配置文件中并在函数调用时进行更新和加载,而不是将其添加到* .rs文件并进行每次更新?
serde_json::Value
,但这是否可以代替强类型结构使用安全方法?我担心内存安全性和安全性会受到恶意用户操纵,而该恶意用户无法访问JSON文件。
pub enum Value {
Null,
Bool(bool),
Number(Number),
String(String),
Array(Vec<Value>),
Object(Map<String, Value>),
}
假定在此程序中无需进一步引用
n_width
字段,因此无需由Rust开发团队打开代码,只需JSON团队即可对JSON文件和struct文件进行更改。
最佳答案
如果要动态定义数据验证,则应考虑使用JSON Schema之类的东西。
如果您需要混合使用动态字段和静态字段,则可以将其与 serde(flatten)
一起使用(如Shepmaster的答案中指出的那样)。
关于rust - 更改JSON结构而无需重新编译时,如何动态定义serde_json的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65219278/
我是一名优秀的程序员,十分优秀!