Skip to content

Conversation

@koushiro
Copy link
Contributor

Signed-off-by: koushiro [email protected]

JSON serialization/deserialization of i128/u128 can only be supported when the arbitrary_precision feature enabled.

But arbitrary_precision numbers don't work with serde(tag = ..) and serde(flatten) syntax (serde-rs/json#505), as a result, the deserialization of structures in jsonrpc-core will be error.

Fortunately, the crate jsonrpc-core provides a workround(paritytech/jsonrpc#521).
Although this workround will cause more extra serialization/deserialization work, but I think it's worth it.

@koushiro koushiro requested review from atenjin and liuchengxu and removed request for liuchengxu September 17, 2020 02:55
Signed-off-by: koushiro <[email protected]>
@koushiro koushiro requested a review from liuchengxu September 17, 2020 03:03
Signed-off-by: koushiro <[email protected]>
Copy link
Contributor

@liuchengxu liuchengxu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! Just a few nits.

Signed-off-by: koushiro <[email protected]>
@koushiro koushiro merged commit 33adc40 into develop-2.0 Sep 17, 2020
@koushiro koushiro deleted the koushiro/fix-json-128-issue branch September 17, 2020 06:23
koushiro added a commit that referenced this pull request Oct 23, 2020
Previously, the `Balance`, `Price` and `Weight` were serialized directly into u128 numbers
in #238, but polkadot.js could not parse them successfully.

Therefore, it is necessary to serialize `Balance`, `Price`, and `Weight` back to String.
Unlike before, the serialization conversion of `Balance` and `Price` only occurs at the RPC layer
and does not involve the types in the pallet (because the `Weight` is an alias of u128,
so we use serde derive directly on the type to complete the serialization conversion).

Signed-off-by: koushiro <[email protected]>
koushiro added a commit that referenced this pull request Oct 23, 2020
Previously, the `Balance`, `Price` and `Weight` were serialized directly into u128 numbers
in #238, but polkadot.js could not parse them successfully.

Therefore, it is necessary to serialize `Balance`, `Price`, and `Weight` back to String.
Unlike before, the serialization conversion of `Balance` and `Price` only occurs at the RPC layer 
and does not involve the types in the pallet (because the `Weight` is an alias of u128,
so we use serde derive directly on the type to complete the serialization conversion).

Signed-off-by: koushiro <[email protected]>
ethan-rep added a commit to ethan-rep/ChainX that referenced this pull request Sep 27, 2025
Previously, the `Balance`, `Price` and `Weight` were serialized directly into u128 numbers
in chainx-org/ChainX#238, but polkadot.js could not parse them successfully.

Therefore, it is necessary to serialize `Balance`, `Price`, and `Weight` back to String.
Unlike before, the serialization conversion of `Balance` and `Price` only occurs at the RPC layer 
and does not involve the types in the pallet (because the `Weight` is an alias of u128,
so we use serde derive directly on the type to complete the serialization conversion).

Signed-off-by: koushiro <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants