Well in this case, JSON schema doesn't specify any more fundamental types other than "number". On the receiving end of a wire or network contract, how do we pick a storage type for "number"? We can't because the constraints of the type are undefined. Ergo JSON schema isn't a strong schema language.
Be explicit is really important when defining contracts.
Type this in your address bar for an illustration:
javascript:alert(1.0000000000000000000000000000001);
So where can we go here. Yep:
{ number: "1.0000000000000000000000000000001" }
which means we then break the encapsulation boundary of the metadata. Then we have a wire contract that says "this is a string" and a separate semantic contract that says "this is a decimal".
XML:
1.0000000000000000000000000000001
Schema:
This is just one example. We can also serialize and deserialize complex self-relational composite types transparently at both ends of the channel.
This is a real world problem we encounter in the financial sector every day.