forked from cloudwego/sonic-rs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjson_number.rs
27 lines (23 loc) · 904 Bytes
/
json_number.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use sonic_rs::{from_str, to_string, Deserialize, JsonNumberTrait, Number, RawNumber, Serialize};
#[derive(Debug, Deserialize, Serialize, PartialEq)]
struct TestJsonNumber {
num: Number,
raw_num: RawNumber,
}
fn main() {
// parse RawNumber from JSON number
let number: RawNumber = from_str(" 123").unwrap();
assert_eq!(number.as_str(), "123");
assert_eq!(to_string(&number).unwrap(), "123");
// parse RawNumber from JSON string
let number: RawNumber = from_str(r#""0.123""#).unwrap();
assert_eq!(number.as_str(), "0.123");
assert_eq!(to_string(&number).unwrap(), "0.123");
assert!(number.is_f64());
assert_eq!(number.as_f64().unwrap(), 0.123);
assert_eq!(number.as_u64(), None);
// convert RawNumber to Number
let num: Number = number.try_into().unwrap();
assert_eq!(num.as_f64().unwrap(), 0.123);
assert_eq!(num.as_u64(), None);
}