我无法使我的结构可编码/可解码:

enum MyEnum {
  Enum1,
  Enum2,
  Enum3,
}

#[derive(RustcDecodable, RustcEncodable)]
pub struct MyStruct {
  val1: MyEnum,
  val2: i32,
  val3 : BTreeMap<i64, Json>,
}

错误是:
the trait `rustc_serialize::serialize::Decodable` is not implemented for the type `rustc_serialize::json::Json`
the trait `rustc_serialize::serialize::Decodable` is not implemented for the type `rustc_serialize::json::MyEnum`

我对我需要实现的东西感到困惑?

我需要实现RustcEncodable而不是ToJson#to_json
但是RustcDecodable呢?没有特质FromJson#from_json
在文档中说rustc_serialize::Decodable/Encodable但是,如果有Decodable,我会需要ToJson#to_json吗?

无论如何,问题是如何使我自己的结构可编码为可解码的JSON?

最佳答案

可能您不应该使用rustc_serialize。它设计得不好且速度慢,仅支持很少的格式。推荐使用Serde进行序列化和反序列化的 crate 。它适用于稳定和夜间。

10-02 02:16