FromJson和ToJson为我自己的结构

时间:2015-09-19 16:32:24

标签: json rust

我无法使我的struct可编码/可解码:

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解码?

1 个答案:

答案 0 :(得分:1)

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