dpp/state_transition/traits/
state_transition_json_convert.rs1use crate::state_transition::StateTransitionValueConvert;
2use crate::ProtocolError;
3use serde::Serialize;
4use serde_json::Value as JsonValue;
5use std::convert::TryInto;
6
7#[derive(Debug, Copy, Clone, Default)]
8pub struct JsonStateTransitionSerializationOptions {
9 pub skip_signature: bool,
10 pub into_validating_json: bool,
11}
12
13pub trait StateTransitionJsonConvert<'a>: Serialize + StateTransitionValueConvert<'a> {
15 fn to_json(
19 &self,
20 options: JsonStateTransitionSerializationOptions,
21 ) -> Result<JsonValue, ProtocolError> {
22 if options.into_validating_json {
23 self.to_object(options.skip_signature)?
24 .try_into_validating_json()
25 .map_err(ProtocolError::ValueError)
26 } else {
27 self.to_object(options.skip_signature)?
28 .try_into()
29 .map_err(ProtocolError::ValueError)
30 }
31 }
32}