Comments (2)
Usually you would implement DeserializeSeed
on the same type that also has the corresponding Visitor
impl. So a canonical impl would look like:
impl<'de> DeserializeSeed<'de> for TheVisitor {
type Value = <Self as Visitor<'de>>::Value;
fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
where
D: Deserializer<'de>,
{
deserializer.deserialize_………(self)
}
}
from json.
The thought of implementing DeserializeSeed
on Visitor
never occurred to me! After studying your suggestion some more, I have settled on the pattern of having a surrogate nested visitor type DynamicVisitor<TupleVisitor<..., NodeVisitor<...>>
that mirrors the target deserialization datatype: Dynamic<(..., NodeVisitor<...>)>
.
I have implemented DeserializeSeed<'de>
on all of the *Visitor
structs, which have the metadata as needed. Then, most of the my deserialize calls look like this
deserializer.deserialize_*(self.0)
to pass the inner visitor to the next step in the recursion.
Have I understand your guidance correctly?
Further, do I understand correctly that, in my recursive deserialization implementations, I should
not mix Deserialize
with DeserializeSeed
? That is, in any chain, I will be dealing with Deserialize<'de>
exclusively, or with DeserializeSeed<'de>
exclusively?
Thanks in advance
from json.
Related Issues (20)
- Deserializing error with UTF-8 BOM (Byte Order Mark) Content HOT 1
- how to make serde_json take ascii text from a json file HOT 2
- { "media": [ ], "label_values": [ { "label": "\u00d0\u0092\u00d1\u0080\u00d0\u00b5\u00d0\u00bc\u00d1\u008f \u00d1\u0081\u00d0\u00be\u00d0\u00b7\u00d0\u00b4\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u008f", "vec": [ { "timestamp_value": 1708192998 } ] },
- json!() macro recursion limit reached on larger objects with no nesting
- json serialization compatible problem HOT 9
- features_check/error.rs interferes with static analysis
- In Rust 1.78+, too many errors get printed when building with neither "std" nor "alloc" HOT 2
- Adding languages to the serde-rs organization HOT 1
- Enum deserialization not working HOT 1
- Serialize enum - only tag
- Implement `Deserializer` for `Map<String, Value>` and `&Map<String, Value>`
- Writing to fmt::Formatter
- Example on "Creating JSON by serializing data structures" doesn't work.
- [Bug] Fails to parse root string array HOT 3
- Discrepancy between serde_json::from_{reader,str}
- Unrecoverable JSON Deserialization Error on Unexpected Enum Variant: "trailing characters" HOT 1
- Unable to differentiate `None` and `Some(Value::Null)` HOT 3
- Non-obvious error message when unable to borrow string and there aren't obvious escape sequences HOT 1
- not ignoring unknow field by default and how do i make this work? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from json.