#反序列化 #json #变体 #null # #选项 #未定义

js_option

一个具有独立 null 和 undefined 变体的 Option 类似类型

2 个版本

0.1.1 2022 年 6 月 18 日
0.1.0 2021 年 5 月 10 日

#862解析器实现

Download history 2444/week @ 2024-03-14 2822/week @ 2024-03-21 2867/week @ 2024-03-28 2265/week @ 2024-04-04 2221/week @ 2024-04-11 3232/week @ 2024-04-18 3202/week @ 2024-04-25 3517/week @ 2024-05-02 2982/week @ 2024-05-09 2526/week @ 2024-05-16 2635/week @ 2024-05-23 2437/week @ 2024-05-30 2482/week @ 2024-06-06 2787/week @ 2024-06-13 2613/week @ 2024-06-20 1967/week @ 2024-06-27

10,266 每月下载量
用于 45 个 crates (3 直接)

MIT 许可证

10KB
139

js_option

此crate提供了一种类型 JsOption,它与标准库的 Option 类型非常相似,但它有三种变体

  • Some(value):类似于 Option::Some
  • Null:显式地不是某个值
  • Undefined:隐式地不是某个值

此类型在您想要将 JSON 反序列化为 Rust 结构体而不丢失信息时非常有用:常规的 Option 从显式的 null 或缺少字段反序列化为 None(这是由于 OptionDeserializeSerialize derive 宏中的特殊处理,对于其他类型,如果缺少字段,则反序列化将失败,除非存在 #[serde(skip)]#[serde(skip_deserializing)]#[serde(default)] 属性)。

示例

# extern crate serde_crate as serde;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
struct MyStruct {
    #[serde(default, skip_serializing_if = "JsOption::is_undefined")]
    my_field: JsOption<String>,
}

许可证

MIT

依赖项

~170KB