Open dariocurr opened 3 weeks ago
As the following example shows, I am unable to differentiate between two different cases:
null
Value
use serde::{Deserialize, Serialize}; #[derive(Debug, PartialEq, Serialize, Deserialize)] struct MyStruct { value: Option<serde_json::Value> } fn main() { let my1: MyStruct =serde_json::from_str("{}").unwrap(); assert_eq!(my1, MyStruct {value: None}); // OK let my2: MyStruct = serde_json::from_str("{\"value\": null}").unwrap(); assert_eq!(my2, MyStruct {value: Some(serde_json::Value::Null)}); // Error }
This happens because null is deserialized as None instead of Some(Value::Null)
None
Some(Value::Null)
As the following example shows, I am unable to differentiate between two different cases:
null
value is explicitly specifiedValue
is omittedThis happens because
null
is deserialized asNone
instead ofSome(Value::Null)