pub trait Deserialize: Sized {
// Required method
fn deserialize(value: &Value) -> Result<Self, Error>;
}
Expand description
A trait for types that can be deserialized from a Value
.
§Example
use shopify_function_wasm_api::{Context, Deserialize, Value, read::Error};
#[derive(Debug, PartialEq)]
struct MyStruct {
value: i32,
}
impl Deserialize for MyStruct {
fn deserialize(value: &Value) -> Result<Self, Error> {
if !value.is_obj() {
return Err(Error::InvalidType);
}
let value = i32::deserialize(&value.get_obj_prop("value"))?;
Ok(MyStruct { value })
}
}
let context = Context::new_with_input(serde_json::json!({ "value": 1 }));
let value = context.input_get().unwrap();
let my_struct = MyStruct::deserialize(&value).unwrap();
assert_eq!(my_struct, MyStruct { value: 1 });
Required Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.