Ich habe JSON, die zwei Formen annehmen:Wie wird die Deserialisierung in eine Enum-Variante basierend auf einem Schlüsselnamen durchgeführt?
"Example:" { "field": 42, "A": 76 }
"Example:" { "field": 42, "B": 110 }
ich es in eine Struktur wie diese deserialisiert wollen:
struct Example {
field: i32,
an_enum: AnEnum,
}
wo
enum AnEnum {
A(i32),
B(i32),
}
Ich weiß nicht, wie man Tun Sie es, ohne einen benutzerdefinierten Deserializer für Example
zu schreiben.
Dies funktioniert:
"Example:" { "field": 42, "an_enum": {"A": 76} }
oder in YAML:
Example:
field: 42
an_enum:
A: 76
Die an_enum
ist überflüssig und lästig zu schreiben. Wie kann ich die erste Form in die Struktur deserialisieren? Oder alternativ, wie kann ich eine Struktur deklarieren, die die gewünschte Syntax erfolgreich deserialisiert?
Ja, ich weiß, wie es mit benutzerdefinierter Deserialisierung zu tun. Wenn ich mehrere Varianten habe, wird dieser Code langwierig, und es passiert mindestens zweimal in meiner aktuellen Aufgabe. Was ich möchte, ist eine Art Annotation im Feld "an_enum", um zu sagen, dass es kein Tag geben wird (oder es bei der Serialisierung weglassen). –
Ich bin nicht vertraut mit der 'r # ... #' Notation. Kannst du es bitte erklären? –
@StevePowell https://stackoverflow.com/questions/26611664/the-operator-r-in-rust –