mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
54 lines
914 B
V
54 lines
914 B
V
import x.json2
|
|
|
|
struct IntegerValues {
|
|
mut:
|
|
ux8 u8
|
|
ux16 u16
|
|
ux32 u32
|
|
ux64 u64
|
|
sx8 i8
|
|
sx16 i16
|
|
sx32 int
|
|
sx64 i64
|
|
}
|
|
|
|
pub fn (mut x IntegerValues) from_json(f json2.Any) {
|
|
fm := f.as_map()
|
|
if v := fm['ux8'] {
|
|
x.ux8 = u8(v.u64())
|
|
}
|
|
if v := fm['ux16'] {
|
|
x.ux16 = u16(v.u64())
|
|
}
|
|
if v := fm['ux32'] {
|
|
x.ux32 = u32(v.u64())
|
|
}
|
|
if v := fm['ux64'] {
|
|
x.ux64 = v.u64()
|
|
}
|
|
//
|
|
if v := fm['sx8'] {
|
|
x.sx8 = i8(v.i64())
|
|
}
|
|
if v := fm['sx16'] {
|
|
x.sx16 = i16(v.i64())
|
|
}
|
|
if v := fm['sx32'] {
|
|
x.sx32 = int(v.i64())
|
|
}
|
|
if v := fm['sx64'] {
|
|
x.sx64 = v.i64()
|
|
}
|
|
}
|
|
|
|
fn test_all_primitive_integer_types_are_encodable_and_decodable() {
|
|
f := IntegerValues{1, 2, 3, 4, -1, -2, -3, -4}
|
|
s := json2.encode[IntegerValues](f)
|
|
dump(s)
|
|
assert s == '{"ux8":1,"ux16":2,"ux32":3,"ux64":4,"sx8":-1,"sx16":-2,"sx32":-3,"sx64":-4}'
|
|
x := json2.decode[IntegerValues](s)!
|
|
dump(x)
|
|
assert x == f
|
|
println('done')
|
|
}
|