json - 在 Rust 中使用可选的 JSON 字段,避免在 JSON 中使用 None/null,而是使用 undefined

标签 json rust serde

有没有比这更好(更简洁)的方式来表达我的 self :

#[derive(Serialize, Deserialize, Debug, Default]
pub struct PagingObject {
  #[serde(skip_serializing_if = "Option::is_none")]
  offsetId: Option<String>,     // offset expressed as element id (uuid)
  #[serde(skip_serializing_if = "Option::is_none")]
  offset: Option<i32>,          // offset expressed as index (numeric)
  #[serde(skip_serializing_if = "Option::is_none")]
  total: Option<i32>,           // total number of elements
  #[serde(skip_serializing_if = "Option::is_none")]
  totalPages: Option<i32>,      // total number of pages based on limit
  #[serde(skip_serializing_if = "Option::is_none")]
  previous: Option<String>,     // link to previous page
  #[serde(skip_serializing_if = "Option::is_none")]
  next: Option<String>,         // link to next page
  #[serde(skip_serializing_if = "Option::is_none")]
  limit: Option<i32>            // the limit used
}

最佳答案

serde 没有任何内置的方法来处理这个问题。但是,第三方serde_with::skip_serializing_none宏解决了这个问题。用法很简单,只需在派生前添加另一个属性即可。

#[serde_with::skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Default]
pub struct PagingObject {
  offsetId: Option<String>,     // offset expressed as element id (uuid)
  offset: Option<i32>,          // offset expressed as index (numeric)
  total: Option<i32>,           // total number of elements
  totalPages: Option<i32>,      // total number of pages based on limit
  previous: Option<String>,     // link to previous page
  next: Option<String>,         // link to next page
  limit: Option<i32>            // the limit used
}

关于json - 在 Rust 中使用可选的 JSON 字段,避免在 JSON 中使用 None/null,而是使用 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71827811/

相关文章:

ios - 将 json 数据发送到单独的类并显示在 tableView 上

rust - 如何获取 glium 的宽度和高度?

rust - 如何获取 Rust 的新 std::heap::System 实例?

rust - 函数返回 serde 反序列化类型时如何修复生命周期错误?

c# - 使用 Newtonsoft 将 JSON 数组反序列化为元组列表

ruby-on-rails - jquery .ajax post 请求到 ruby​​ on Rails 服务器在客户端上给出 JSON.parse 错误

xml - 如何使用 serde_xml_rs 根据标签名称将 XML 反序列化为不同的结构?

generics - 限制 Rust 结构体的泛型参数进行反序列化

javascript - 使用 $.getJSON 时可以将变量发送到 PHP 代码吗?

rust - 如何实现采用带有生命周期注释的通用向量的结构?