Skip to main content

JsonConvertible

Trait JsonConvertible 

Source
pub trait JsonConvertible: Serialize + DeserializeOwned {
    // Provided methods
    fn to_json(&self) -> Result<JsonValue, ProtocolError> { ... }
    fn from_json(json: JsonValue) -> Result<Self, ProtocolError> { ... }
}
Expand description

Convert to/from JSON using human-readable serde (Identifier = base58, binary = base64).

This trait produces clean serde_json::Value with native number types. Any JS-boundary concerns (large number stringification) are handled by the WASM layer.

§⚠️ HR / non-HR divergence (Critical-1)

JsonConvertible calls serde_json::to_value, which uses a serializer that reports is_human_readable() == true. The mirror trait ValueConvertible uses platform_value::to_value, which reports false. Types whose Serialize impl branches on is_human_readable() produce structurally different output between the two paths:

Typeto_json() (HR)to_object() (non-HR)
platform_value::Identifier"5bV6jUfh..." (bs58 string)Value::Identifier([u8; 32])
[platform_value::BinaryData]"sg==" (base64 string)Value::Bytes(Vec<u8>)
Bytes20 / Bytes32 / Bytes36base64 stringValue::Bytes32([u8; N]) etc.
CoreScript"dqkU..." (base64 string)Value::Bytes(Vec<u8>)

Do not assume self.to_object()?.try_into_json()self.to_json(). They render the same field as a string in one and a byte array in the other. Round-trip tests should exercise each path independently.

§⚠️ ContentDeserializer caveat

Manual Deserialize impls that branch on deserializer.is_human_readable() must also handle serde::__private::de::ContentDeserializer, used internally by #[serde(tag = "...")] enums. ContentDeserializer always reports is_human_readable: true regardless of the original source — so a non-HR platform_value::Value flowing into a tagged enum gets shape- inferred as if it were HR. Recipe: write a dual-shape visitor accepting both shapes in the HR branch via deserialize_any. See [platform_value::Bytes32::deserialize] for the canonical example, and rs-dpp/src/serialization/serde_bytes.rs for [u8; N] / Vec<u8>.

Provided 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.

Implementors§

Source§

impl JsonConvertible for AddressWitness

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for PlatformAddress

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for AddressFundsFeeStrategyStep

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for StoredAssetLockInfo

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for AssetLockValue

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ExtendedBlockInfo

Source§

impl JsonConvertible for ExtendedEpochInfo

Source§

impl JsonConvertible for FinalizedEpochInfo

Source§

impl JsonConvertible for Validator

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ValidatorSet

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenConfiguration

Source§

impl JsonConvertible for TokenConfigurationPresetFeatures

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenConfigurationConvention

Source§

impl JsonConvertible for TokenConfigurationChangeItem

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenConfigurationLocalization

Source§

impl JsonConvertible for TokenDistributionInfo

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenDistributionType

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenDistributionTypeWithResolvedRecipient

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenDistributionRules

Source§

impl JsonConvertible for TokenKeepsHistoryRules

Source§

impl JsonConvertible for TokenMarketplaceRules

Source§

impl JsonConvertible for TokenTradeMode

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DistributionFunction

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenDistributionRecipient

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenDistributionResolvedRecipient

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenPerpetualDistribution

Source§

impl JsonConvertible for RewardDistributionMoment

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for RewardDistributionType

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenPreProgrammedDistribution

Source§

impl JsonConvertible for AuthorizedActionTakers

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for ChangeControlRules

Source§

impl JsonConvertible for DataContractConfig

Source§

impl JsonConvertible for ArrayItemType

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ContestedIndexFieldMatch

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ContestedIndexResolution

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for IndexCountability

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for OrderBy

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for Group

Source§

impl JsonConvertible for DataContractInSerializationFormat

Source§

impl JsonConvertible for StorageKeyRequirements

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for Document

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for GroupActionEvent

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for GroupAction

Source§

impl JsonConvertible for GroupActionStatus

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for Identity

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ContractBounds

Source§

impl JsonConvertible for IdentityPublicKey

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for AssetLockProof

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for StateTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for StateTransitionProofResult

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for AddressCreditWithdrawalTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for AddressFundingFromAssetLockTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for AddressFundsTransferTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for BatchedTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DocumentPurchaseTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DocumentTransferTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DocumentTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DocumentUpdatePriceTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DocumentBaseTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for BatchTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DocumentCreateTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DocumentDeleteTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DocumentReplaceTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenBurnTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenClaimTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenConfigUpdateTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenDestroyFrozenFundsTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenDirectPurchaseTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenEmergencyActionTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenFreezeTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenMintTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenSetPriceForDirectPurchaseTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenTransferTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenUnfreezeTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenBaseTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for DataContractCreateTransition

Source§

impl JsonConvertible for DataContractUpdateTransition

Source§

impl JsonConvertible for IdentityCreateFromAddressesTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for IdentityCreateTransition

Source§

impl JsonConvertible for IdentityCreditTransferToAddressesTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for IdentityCreditTransferTransition

Source§

impl JsonConvertible for IdentityCreditWithdrawalTransition

Source§

impl JsonConvertible for IdentityTopUpFromAddressesTransition

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for IdentityTopUpTransition

Source§

impl JsonConvertible for IdentityUpdateTransition

Source§

impl JsonConvertible for MasternodeVoteTransition

Source§

impl JsonConvertible for IdentityPublicKeyInCreation

Source§

impl JsonConvertible for IdentityCreateFromShieldedPoolTransition

Source§

impl JsonConvertible for ShieldFromAssetLockTransition

Source§

impl JsonConvertible for ShieldTransition

Source§

impl JsonConvertible for ShieldedTransferTransition

Source§

impl JsonConvertible for ShieldedWithdrawalTransition

Source§

impl JsonConvertible for UnshieldTransition

Source§

impl JsonConvertible for TokenContractInfo

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenEmergencyAction

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for GasFeesPaidBy

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for IdentityTokenInfo

Source§

impl JsonConvertible for TokenStatus

Source§

impl JsonConvertible for TokenEvent

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for TokenPaymentInfo

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenPricingSchedule

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ContenderWithSerializedDocument

Source§

impl JsonConvertible for ResourceVoteChoice

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for YesNoAbstainVoteChoice

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ContestedDocumentVotePollWinnerInfo

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for VotePoll

Source§

impl JsonConvertible for Vote

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for ResourceVote

Source§

impl JsonConvertible for Pooling

Available on crate feature json-conversion only.
Source§

impl JsonConvertible for BlockInfo

Source§

impl JsonConvertible for Epoch

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenConfigurationPreset

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for TokenDistributionKey

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ContestedIndexInformation

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for Index

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for IndexProperty

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for GroupStateTransitionInfo

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ChainAssetLockProof

Source§

impl JsonConvertible for InstantAssetLockProof

Source§

impl JsonConvertible for PartialIdentity

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for IdentityV0

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for Metadata

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for SerializedAction

Available on crate features json-conversion and serde-conversion only.
Source§

impl JsonConvertible for ContestedDocumentResourceVotePoll