Я пытаюсь принять некоторые JSON, который выглядит следующим образом:Deserialize на структуру с членом перечислений
{
"foo": "bar",
"name": "some name"
}
и использовать serde
десериализации его в структуру данных, как это:
#[derive(Clone, PartialEq, Debug)]
pub struct Quux {
foo: Foo,
name: String,
}
pub enum Foo {
Bar,
Baz,
}
I have some code, но, честно говоря, это довольно прямолинейно из руководства serde
«десериализация без макросов», и я не уверен, что мне нужно будет сделать, чтобы десериализовать поле foo
на Foo
.
Я реализовал Deserialize
для Foo
перечисления, который я думал, было бы достаточно для visitor.visit_value()
вызова в моем impl serde::de::Vistor for QuuxVisitor
позвонить эту версию deserialize
, но, кажется, не так.
Я получаю ошибку, когда я пытаюсь десериализации к Quux
является called 'Result::unwrap()' on an 'Err' value: SyntaxError("expected value", 2, 20)
, но если я изменю Quux
использовать String
для foo
вместо Foo
, это десериализует хорошо.
Да, это приведет к десериализации перечисления, но когда структура имеет член, который имеет тип 'enum Foo', десериализация структуры не использует' Deserialize' impl для 'Foo'. –