小编kpe*_*per的帖子

如何更改 Serde 的默认实现以返回空对象而不是 null?

我正在开发 API 包装器,但在反序列化空 JSON 对象时遇到了一些麻烦。

API 返回此 JSON 对象。请注意以下位置的空对象entities

{
  "object": "page",
  "entry": [
    {
      "id": "1158266974317788",
      "messaging": [
        {
          "sender": {
            "id": "some_id"
          },
          "recipient": {
            "id": "some_id"
          },
          "message": {
            "mid": "mid.$cAARHhbMo8SBllWARvlfZBrJc3wnP",
            "seq": 5728,
            "text": "test",
            "nlp": {
              "entities": {} // <-- here
            }
          }
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是我对message属性的等效结构(已编辑):

 #[derive(Serialize, Deserialize, Clone, Debug)]
pub struct TextMessage {
    pub mid: String,
    pub seq: u64,
    pub text: String,
    pub nlp: NLP,
} …
Run Code Online (Sandbox Code Playgroud)

rust serde serde-json

3
推荐指数
1
解决办法
2507
查看次数

无法使用bincode立即解码写入文件的对象

当我尝试运行测试时,我收到此异常:

thread 'persistent_log::doc::test::test_sync' panicked at 'called `Result::unwrap()` on an `Err` value: IoError(Error { repr: Os { code: 9, message: "Bad file descriptor" } })', ../src/libcore/result.rs:783
Run Code Online (Sandbox Code Playgroud)

术语:

#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord,RustcEncodable,RustcDecodable)]
pub struct Term(u64);
Run Code Online (Sandbox Code Playgroud)

测试:

fn create() {
    File::create(&"term");
}

#[test]
fn test_sync() {
    create();

    let mut f = File::open(&"term").unwrap();

    let term = Term(10);

    encode_into(&term, &mut f, SizeLimit::Infinite).unwrap();

    let decoded_term: Term = decode_from(&mut f, SizeLimit::Infinite).unwrap();

    assert_eq!(decoded_term, term);
}
Run Code Online (Sandbox Code Playgroud)

我想将对象term写入文件,然后将其读入.

rust

2
推荐指数
1
解决办法
706
查看次数

标签 统计

rust ×2

serde ×1

serde-json ×1