dpp/state_transition/traits/
state_transition_json_convert.rs

1use 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
13/// The trait contains methods related to conversion of StateTransition into different formats
14pub trait StateTransitionJsonConvert<'a>: Serialize + StateTransitionValueConvert<'a> {
15    /// Returns the [`serde_json::Value`] instance that encodes:
16    ///  - Identifiers  - with base58
17    ///  - Binary data  - with base64
18    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}