/ / Wie dekodiere ich einen JSON-Wert, der ein String oder ein Nullwert sein kann? - Json, Deserialisierung, Rost

Wie dekodiert man einen JSON-Wert, der ein String oder null sein kann? - JSON, Deserialisierung, Rost

Ich versuche, JSON in Rust zu entschlüsseln.

JSON-Beispiele:

[{"id": 1234, "rank": 44, "author": null}]
[{"id": 1234, "rank": 44, "author": "Some text"}]

Wenn ich benutze String für das Autorenfeld:

#[derive(Show, RustcDecodable, RustcEncodable)]
pub struct TestStruct {
pub id: u64,
pub rank: i64,
pub author: String,
}

Es wirft den Fehler:

thread "<main>" panicked at "called `Result::unwrap()` on an `Err` value: ExpectedError("String", "null")", /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libcore/result.rs:742

Wie kann ich diesen JSON-Wert dekodieren (filtern / ignorieren)?

Antworten:

4 für die Antwort № 1

Ändern Sie den Typ von author von String zu Option<String>.

#[derive(Show, RustcDecodable, RustcEncodable)]
pub struct TestStruct {
pub id: u64,
pub rank: i64,
pub author: Option<String>,
}

Ergebnisse:

Ok([TestStruct { id: 1234u64, rank: 44i64, author: None }]
Ok([TestStruct { id: 1234u64, rank: 44i64, author: "Some text" }])