当前位置: 首页 > news >正文

开淘宝店和做网站有什么区别百度首页推荐关不掉吗

开淘宝店和做网站有什么区别,百度首页推荐关不掉吗,机票旅游网站建设,网站建设需要经过哪几个步骤文章目录 Rust常用库之序列化和反序列化库serde(使用 Serde 处理json)什么是serde库设计使用 Serde 处理jsonr# 的使用 参考 Rust常用库之序列化和反序列化库serde(使用 Serde 处理json) 什么是serde库 官网:https:/…

文章目录

  • Rust常用库之序列化和反序列化库serde(使用 Serde 处理json)
    • 什么是serde库
    • 设计
    • 使用 Serde 处理json
      • r# 的使用
    • 参考

Rust常用库之序列化和反序列化库serde(使用 Serde 处理json)

什么是serde库

官网:https://serde.rs/

serde(Serialization/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 数据类型。例如String,&str、usize、 Vec、HashMap<K,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

http://www.zhongyajixie.com/news/15053.html

相关文章:

  • c2c网站设计微信朋友圈推广平台
  • 做网站域名多少钱一呼百应推广平台
  • 博客做单页网站seo外包网络公司
  • 重庆观音桥网站建设百度站长工具seo查询
  • 广州哪里做公司网站号搜索引擎排名2022
  • 深圳网站建设开发公司哪家好百度搜索指数排名
  • 哪个行业必须做网站站长统计官方网站
  • 知舟网站建设关键词优化seo排名
  • 网站域名备案查询官网网站快速收录的方法
  • 建设部 招投标网站大数据精准营销系统
  • 搜狗不收录 wordpressseo推广视频隐迅推专业
  • 做网站建立数据库百度如何优化排名靠前
  • 普通网站建设是什么媒体吧软文平台
  • 洞口网站建设交换友情链接的平台有哪些
  • 在凡科做网站编辑给我免费播放片高清在线观看
  • 谁做网站网站标题优化排名
  • 三合一网站建设用途三叶草gy5987
  • 专业网站建设怎么样网络推广发展
  • 网页设计和网站建设前端培训费用大概多少
  • 上海专业微信网站开发公司上海搜索引擎优化1
  • 药品加工厂做网站公司软文推广
  • 微网站制作工具有哪些阿里云搜索
  • 做网站看什么书好昆明seo建站
  • javaweb做网站的优点网络推广协议合同范本
  • 从化做网站苏州网络推广服务
  • 昆山装饰公司网站建设上海企业推广
  • 电商网站设计风格和内容手机网站制作平台
  • 快速建站开源新闻源发稿平台
  • wordpress 哪些网站吗链接怎么做
  • 400元做网站送网推信息流优化师是做什么的