cytoscape网站开发,东莞招聘信息最新招聘2022,网站的涂鸦效果图怎么做的,南昌专业网站排名推广文章目录 Rust常用库之序列化和反序列化库serde#xff08;使用 Serde 处理json#xff09;什么是serde库设计使用 Serde 处理jsonr# 的使用 参考 Rust常用库之序列化和反序列化库serde#xff08;使用 Serde 处理json#xff09;
什么是serde库
官网#xff1a;https:/… 文章目录 Rust常用库之序列化和反序列化库serde使用 Serde 处理json什么是serde库设计使用 Serde 处理jsonr# 的使用 参考 Rust常用库之序列化和反序列化库serde使用 Serde 处理json
什么是serde库
官网https://serde.rs/
serdeSerialization/Deserialization是一个用于在 Rust 中进行序列化和反序列化的强大库。它允许您在不同的数据表示之间进行转换如 JSON、Bincode、CBOR、MessagePack 等。
**Rust中的serde crate用于高效地序列化和反序列化多种格式的数据。**它通过提供两个可以使用的traits来实现这一点这两个traits为 Deserialize 和 Serialize 。作为生态系统中最著名的 crate 之一它目前支持 20 多种类型的序列化反序列化。 serde 库提供了一个注解 #[derive(Serialize, Deserialize)]通过在结构体或枚举上添加该注解可以自动为其生成序列化和反序列化的代码。这使得在 Rust 中进行序列化和反序列化变得非常简单和方便。 设计
许多其他语言依赖运行时反射来序列化数据而 Serde 是建立在 Rust 强大的特征系统之上的。知道如何序列化和反序列化本身的数据结构是实现 Serde Serialize和DeserializeTraits 或使用 Serde 的导出属性在编译时自动生成实现的数据结构。这避免了反射或运行时类型信息的任何开销。事实上在许多情况下Rust 编译器可以完全优化数据结构和数据格式之间的交互使 Serde 序列化在数据结构和数据格式的特定选择上执行与手写序列化器相同的速度。
使用 Serde 处理json
通过使用 serde您可以轻松地将结构体、枚举、向量、哈希表等 Rust 数据类型转换为各种格式的数据如 JSON 字符串以及将这些格式的数据转换回原始的 Rust 数据类型。
Serde 开箱即用能够满足序列化和反序列化常见 Rust 数据类型。例如Stringstr、usize、 Vec、HashMapK,V都支持。此外Serde 还提供了派生宏来为您自己的程序中的结构生成序列化实现。使用派生宏的方式如下
use serde::{Serialize, Deserialize};#[derive(Serialize, Deserialize, Debug)]
struct Point {x: i32,y: i32,
}fn main() {let point Point { x: 1, y: 2 };// Convert the Point to a JSON string.let serialized serde_json::to_string(point).unwrap();// Prints serialized {x:1,y:2}println!(serialized {}, serialized);// Convert the JSON string back to a Point.let deserialized: Point serde_json::from_str(serialized).unwrap();// Prints deserialized Point { x: 1, y: 2 }println!(deserialized {:?}, deserialized);
}r# 的使用
r# 是一种 Rust 字符串字面量的前缀标记用于定义原始字符串Raw Strings。 r# 是原始字符串的开始标记表示接下来的字符串是一个原始字符串。原始字符串是一种在字符串中可以包含换行符和其他特殊字符的方式而不需要使用转义字符来表示。
在原始字符串中你可以自由地包含换行符、引号、斜杠等字符而不需要转义它们。在这个例子中data_str 定义了一个包含 JSON 格式数据的原始字符串其中包含了换行符和双引号。 使用原始字符串可以使得字符串的书写更加直观和易读尤其是当字符串中包含大量特殊字符或格式化的文本时。 let data_str r#{name: Jane Doe,age: 25,net_worth : $1000000}#
.to_string();
let key net_worth.to_string();.to_string() 是将原始字符串转换为 String 类型的方法调用。
原始字符串Raw Strings是一种特殊的字符串字面量它的类型是 str即字符串切片。然而有时候我们可能需要将原始字符串转换为 String 类型以便在程序中更方便地操作和处理它。 如果只需要对字符串进行读取或不需要修改的操作原始字符串的 str 类型可能已经足够使用。转换为 String 类型取决于具体的需求和后续的处理逻辑。 从json中获取某个字段的值
let v: Value serde_json::from_str(data_str).unwrap();
let val v[key];代码解释
serde_json::from_str(data_str) 是 serde_json 库提供的函数用于将字符串 data_str 解析为 JSON 数据。from_str 函数将字符串解析为 * Value 类型的 JSON 数据并返回一个 Result 类型的结果。unwrap() 方法用于从 Result 类型中提取出解析后的 Value 值如果解析成功则返回该值否则触发 panic。let val v[key]; 通过给定的键 key 从 Value 类型的 JSON 数据 v 中获取对应的值。
Value 类型是由 serde_json 库提供的。它是一个枚举类型用于表示 JSON 数据的不同种类和结构。
serde_json 是 Rust 中的一个用于处理 JSON 数据的流行库。它提供了一组用于解析、序列化和处理 JSON 数据的函数和类型。其中Value 枚举类型是 serde_json 的核心类型之一。
Value 枚举类型定义了不同种类的 JSON 值。它有以下变体variants
Null: 表示 JSON 的 null 值。Bool: 表示 JSON 的布尔值。Number: 表示 JSON 的数值。String: 表示 JSON 的字符串。Array: 表示 JSON 的数组。Object: 表示 JSON 的对象。 通过使用 Value 枚举类型我们可以方便地处理和操作不同类型的 JSON 数据而无需提前知道其确切的结构或类型。 Value 类型是由 serde_json 库提供的。它是一个枚举类型用于表示 JSON 数据的不同种类和结构。 这段代码使用 serde_json::Value 类型来表示通过 serde_json 解析的 JSON 数据并通过 Value 的各种方法和功能来处理和操作它们。 serde_json 库将字符串 data_str 解析为 Value 类型的 JSON 数据并从中获取特定键的值。
参考
【跟小嘉学 Rust 编程】二十六、Rust的序列化解决方案(Serde) https://blog.csdn.net/fj_Author/article/details/132623766