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)
- [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
- Internally tagged enums duplicate tag when struct also has it assigned
- Weird behaviour when deserializing a `RawValue` through a `Visitor`. HOT 1
- No method named `shift_insert` found for struct `IndexMap` in the current scope HOT 1
- How to Add Resiliency to Errors in a `no_std` and `no_alloc` Context ? HOT 2
- Untagged Enum Bug (?) HOT 1
- Support in-place deserialization in StreamDeserializer
- Bug: f64 within flattened HashMap throws error on deserialization HOT 1
- Adding the spreadsheet operator as part of the `json` macro
- Force Serde JSON to not use preserve order feature
- to_string should add a \n to the end of the json HOT 1
- `json!` unusable with `no_std` and feature `alloc` HOT 1
- `ser::Error` completely hides inner `io::Error`
- Deserializing 2^53-1 or -(2^53-1) into an `f64` loses precision HOT 3
- Isolate fields that exist in the JSON value but were not present in the struct deserialized into HOT 2
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.