dpp/data_contract/v0/conversion/
json.rs

1use crate::data_contract::conversion::json::DataContractJsonConversionMethodsV0;
2use crate::data_contract::conversion::value::v0::DataContractValueConversionMethodsV0;
3
4use crate::data_contract::v0::DataContractV0;
5use crate::version::PlatformVersion;
6use crate::ProtocolError;
7
8use serde_json::Value as JsonValue;
9use std::convert::TryInto;
10
11impl DataContractJsonConversionMethodsV0 for DataContractV0 {
12    fn from_json(
13        json_value: JsonValue,
14        full_validation: bool,
15        platform_version: &PlatformVersion,
16    ) -> Result<Self, ProtocolError> {
17        Self::from_value(json_value.into(), full_validation, platform_version)
18    }
19
20    /// Returns Data Contract as a JSON Value
21    fn to_json(&self, platform_version: &PlatformVersion) -> Result<JsonValue, ProtocolError> {
22        self.to_value(platform_version)?
23            .try_into()
24            .map_err(ProtocolError::ValueError)
25
26        // TODO: I guess we should convert the binary fields back to base64/base58?
27    }
28
29    /// Returns Data Contract as a JSON Value that can be used for validation
30    fn to_validating_json(
31        &self,
32        platform_version: &PlatformVersion,
33    ) -> Result<JsonValue, ProtocolError> {
34        self.to_value(platform_version)?
35            .try_into_validating_json()
36            .map_err(ProtocolError::ValueError)
37    }
38}