You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pubtypeEntries = Vec<Vec<EntryItem>>;// Untagged Enum is the issue#[derive(Debug,Clone,PartialEq,Serialize,Deserialize)]#[serde(untagged)]pubenumEntryItem{Str(String),Int(u128),ContentVec(Vec<serde_json::Value>),}
Error("data did not match any variant of untagged enum EntryItem", line:9, column:8),)[src/main.rs:21:5] serde_json::from_str::<Entries2>(mystr) = Ok([[Str("手信号",),Str("てしんごう",),Str("",),Str("",),ContentVec(Number(0),),ContentVec(Array[Object{"content":String("[{/* long asf */}]"),"type":String("structured-content"),},],),],],)
When the type is ContentVec(Vec<Value>), it throws the error above.
However, when I set ContentVec(Value) it deserializes fine?
Is that not a vector right after the 0 in the json?
And when I print it out the value as ContentVec(Value) instead of ContentVec(Vec<Value>), it is clearly an array:
I even added this if statement (when set as ContentVec(Value) ), to make sure it is an array.
Again, it prints out with no errors!(the same thing as above).
ifletEntryItem::ContentVec(value) = &entry[5]{// This worksif value.is_array(){println!("{x:?}")}}
After asking a handful of people, everybody agreed this is not the intended behavior.
If it is, can I can get an explanation as to what is going on here...?
I think this is caused by serde-rs/serde#2230. If you use u64 instead of u128 it works. You see that the Int(u128), variant of the enum is not being deserialized.
When the type is
ContentVec(Vec<Value>)
, it throws the error above.However, when I set
ContentVec(Value)
it deserializes fine?Is that not a vector right after the
0
in the json?And when I print it out the value as
ContentVec(Value)
instead ofContentVec(Vec<Value>)
, it is clearly an array:I even added this if statement (when set as
ContentVec(Value)
), to make sure it is an array.Again, it prints out with no errors! (the same thing as above).
After asking a handful of people, everybody agreed this is not the intended behavior.
If it is, can I can get an explanation as to what is going on here...?
Please try the code out for yourself.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6811facc5a4e83d7a46847f37da9d569
The text was updated successfully, but these errors were encountered: