2015-09-19 2 views
1

я не могу сделать мой структура кодируемый/декодируемым:FromJson и ToJson для моей собственной структуры

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?

+0

Обратите внимание, что стиль ржавчины - это 4-х сторонние отступы. – Shepmaster

+1

Не могли бы вы объяснить, почему вы также не комментировали 'MyEnum' с помощью' # [getive (RustcDecodable, RustcEncodable)] '? Не могли бы вы также объяснить, почему вы хотите иметь поле 'val3: BTreeMap ', в частности, что это может представлять? – Shepmaster

+0

@Shepmaster, 1) Хорошо 2) Нет, я не могу объяснить. Я хочу просто решить его. –

ответ

1

Возможно, вы не должны использовать rustc_serialize. Он не очень хорошо разработан и работает медленно, поддерживается только очень небольшое количество форматов. Serde - рекомендуемый ящик для сериализации и десериализации. Он работает как стабильно, так и в ночное время.

+0

Это не выглядит смешно и ужасно трудно понять в примере кода в [repo] (https://github.com/serde-rs/serde) ... Может быть, вы пробовали более старую версию с плохой эргономикой? – aochagavia

+0

Использование serde на самом деле очень простое. Написание lib для поддержки другого формата требует написания большого количества кода, но все действительно необходимо, и Serde чувствует себя хорошо продуманным. – Pyfisch

Смежные вопросы