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:
| Type | to_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 / Bytes36 | base64 string | Value::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§
fn to_json(&self) -> Result<JsonValue, ProtocolError>
fn from_json(json: JsonValue) -> Result<Self, ProtocolError>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementors§
impl JsonConvertible for AddressCreditWithdrawalTransition
json-conversion and serde-conversion only.impl JsonConvertible for AddressFundingFromAssetLockTransition
json-conversion and serde-conversion only.impl JsonConvertible for AddressFundsFeeStrategyStep
json-conversion and serde-conversion only.impl JsonConvertible for AddressFundsTransferTransition
json-conversion and serde-conversion only.impl JsonConvertible for AddressWitness
json-conversion and serde-conversion only.impl JsonConvertible for ArrayItemType
json-conversion and serde-conversion only.impl JsonConvertible for AssetLockProof
json-conversion only.impl JsonConvertible for AssetLockValue
json-conversion and serde-conversion only.impl JsonConvertible for AuthorizedActionTakers
json-conversion only.impl JsonConvertible for BatchTransition
json-conversion and serde-conversion only.impl JsonConvertible for BatchedTransition
json-conversion and serde-conversion only.impl JsonConvertible for BlockInfo
impl JsonConvertible for ChainAssetLockProof
impl JsonConvertible for ChangeControlRules
impl JsonConvertible for ContenderWithSerializedDocument
impl JsonConvertible for ContestedDocumentResourceVotePoll
impl JsonConvertible for ContestedDocumentVotePollWinnerInfo
json-conversion only.impl JsonConvertible for ContestedIndexFieldMatch
json-conversion and serde-conversion only.impl JsonConvertible for ContestedIndexInformation
json-conversion and serde-conversion only.impl JsonConvertible for ContestedIndexResolution
json-conversion and serde-conversion only.impl JsonConvertible for ContractBounds
impl JsonConvertible for DataContractConfig
impl JsonConvertible for DataContractCreateTransition
impl JsonConvertible for DataContractInSerializationFormat
impl JsonConvertible for DataContractUpdateTransition
impl JsonConvertible for DistributionFunction
json-conversion and serde-conversion only.impl JsonConvertible for Document
json-conversion and serde-conversion only.impl JsonConvertible for DocumentBaseTransition
json-conversion and serde-conversion only.impl JsonConvertible for DocumentCreateTransition
json-conversion and serde-conversion only.impl JsonConvertible for DocumentDeleteTransition
json-conversion and serde-conversion only.impl JsonConvertible for DocumentIndexOnlyDeleteTransition
json-conversion and serde-conversion only.impl JsonConvertible for DocumentPurchaseTransition
json-conversion and serde-conversion only.impl JsonConvertible for DocumentReplaceTransition
json-conversion and serde-conversion only.impl JsonConvertible for DocumentTransferTransition
json-conversion and serde-conversion only.impl JsonConvertible for DocumentTransition
json-conversion and serde-conversion only.impl JsonConvertible for DocumentUpdatePriceTransition
json-conversion and serde-conversion only.impl JsonConvertible for Epoch
json-conversion and serde-conversion only.impl JsonConvertible for ExtendedBlockInfo
impl JsonConvertible for ExtendedEpochInfo
impl JsonConvertible for FinalizedEpochInfo
impl JsonConvertible for GasFeesPaidBy
json-conversion and serde-conversion only.impl JsonConvertible for Group
impl JsonConvertible for GroupAction
impl JsonConvertible for GroupActionEvent
json-conversion only.impl JsonConvertible for GroupActionStatus
json-conversion and serde-conversion only.impl JsonConvertible for GroupStateTransitionInfo
json-conversion and serde-conversion only.impl JsonConvertible for Identity
json-conversion and serde-conversion only.impl JsonConvertible for IdentityCreateFromAddressesTransition
json-conversion and serde-conversion only.impl JsonConvertible for IdentityCreateFromShieldedPoolTransition
impl JsonConvertible for IdentityCreateTransition
impl JsonConvertible for IdentityCreditTransferToAddressesTransition
json-conversion and serde-conversion only.impl JsonConvertible for IdentityCreditTransferTransition
impl JsonConvertible for IdentityCreditWithdrawalTransition
impl JsonConvertible for IdentityPublicKey
json-conversion only.impl JsonConvertible for IdentityPublicKeyInCreation
impl JsonConvertible for IdentityTokenInfo
impl JsonConvertible for IdentityTopUpFromAddressesTransition
json-conversion and serde-conversion only.impl JsonConvertible for IdentityTopUpTransition
impl JsonConvertible for IdentityUpdateTransition
impl JsonConvertible for IdentityV0
json-conversion and serde-conversion only.impl JsonConvertible for Index
json-conversion and serde-conversion only.impl JsonConvertible for IndexCountability
json-conversion and serde-conversion only.impl JsonConvertible for IndexProperty
json-conversion and serde-conversion only.impl JsonConvertible for InstantAssetLockProof
impl JsonConvertible for MasternodeVoteTransition
impl JsonConvertible for Metadata
json-conversion and serde-conversion only.impl JsonConvertible for OrderBy
json-conversion and serde-conversion only.impl JsonConvertible for PartialIdentity
json-conversion and serde-conversion only.impl JsonConvertible for PlatformAddress
json-conversion and serde-conversion only.impl JsonConvertible for Pooling
json-conversion only.impl JsonConvertible for ResourceVote
impl JsonConvertible for ResourceVoteChoice
json-conversion only.impl JsonConvertible for RewardDistributionMoment
json-conversion and serde-conversion only.impl JsonConvertible for RewardDistributionType
json-conversion and serde-conversion only.impl JsonConvertible for SerializedAction
json-conversion and serde-conversion only.impl JsonConvertible for ShieldFromAssetLockTransition
impl JsonConvertible for ShieldTransition
impl JsonConvertible for ShieldedTransferTransition
impl JsonConvertible for ShieldedWithdrawalTransition
impl JsonConvertible for StateTransition
json-conversion and serde-conversion only.impl JsonConvertible for StateTransitionProofResult
json-conversion and serde-conversion only.impl JsonConvertible for StorageKeyRequirements
json-conversion and serde-conversion only.impl JsonConvertible for StoredAssetLockInfo
json-conversion and serde-conversion only.impl JsonConvertible for TokenBaseTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenBurnTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenClaimTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenConfigUpdateTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenConfiguration
impl JsonConvertible for TokenConfigurationChangeItem
json-conversion and serde-conversion only.impl JsonConvertible for TokenConfigurationConvention
impl JsonConvertible for TokenConfigurationLocalization
impl JsonConvertible for TokenConfigurationPreset
json-conversion and serde-conversion only.impl JsonConvertible for TokenConfigurationPresetFeatures
json-conversion and serde-conversion only.impl JsonConvertible for TokenContractInfo
json-conversion and serde-conversion only.impl JsonConvertible for TokenDestroyFrozenFundsTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenDirectPurchaseTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenDistributionInfo
json-conversion and serde-conversion only.impl JsonConvertible for TokenDistributionKey
json-conversion and serde-conversion only.impl JsonConvertible for TokenDistributionRecipient
json-conversion and serde-conversion only.impl JsonConvertible for TokenDistributionResolvedRecipient
json-conversion and serde-conversion only.impl JsonConvertible for TokenDistributionRules
impl JsonConvertible for TokenDistributionType
json-conversion and serde-conversion only.impl JsonConvertible for TokenDistributionTypeWithResolvedRecipient
json-conversion and serde-conversion only.impl JsonConvertible for TokenEmergencyAction
json-conversion and serde-conversion only.impl JsonConvertible for TokenEmergencyActionTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenEvent
json-conversion only.impl JsonConvertible for TokenFreezeTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenKeepsHistoryRules
impl JsonConvertible for TokenMarketplaceRules
impl JsonConvertible for TokenMintTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenPaymentInfo
json-conversion and serde-conversion only.impl JsonConvertible for TokenPerpetualDistribution
impl JsonConvertible for TokenPreProgrammedDistribution
impl JsonConvertible for TokenPricingSchedule
json-conversion and serde-conversion only.impl JsonConvertible for TokenSetPriceForDirectPurchaseTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenStatus
impl JsonConvertible for TokenTradeMode
json-conversion and serde-conversion only.impl JsonConvertible for TokenTransferTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenTransition
json-conversion and serde-conversion only.impl JsonConvertible for TokenUnfreezeTransition
json-conversion and serde-conversion only.impl JsonConvertible for UnshieldTransition
impl JsonConvertible for Validator
json-conversion and serde-conversion only.impl JsonConvertible for ValidatorSet
json-conversion and serde-conversion only.impl JsonConvertible for Vote
json-conversion only.impl JsonConvertible for VotePoll
impl JsonConvertible for YesNoAbstainVoteChoice
json-conversion and serde-conversion only.