2019-08-23 01:54:39 +02:00
|
|
|
import json
|
2019-06-27 14:28:12 +02:00
|
|
|
|
2020-05-04 20:43:22 +02:00
|
|
|
struct Employee {
|
|
|
|
name string
|
|
|
|
age int
|
|
|
|
}
|
|
|
|
|
|
|
|
fn test_simple() {
|
|
|
|
x := Employee{'Peter', 28}
|
|
|
|
s := json.encode(x)
|
2020-05-04 21:03:18 +02:00
|
|
|
assert s == '{"name":"Peter","age":28}'
|
2020-05-04 20:43:22 +02:00
|
|
|
y := json.decode(Employee, s) or {
|
|
|
|
assert false
|
|
|
|
}
|
|
|
|
assert y.name == 'Peter'
|
|
|
|
assert y.age == 28
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
2019-06-27 14:28:12 +02:00
|
|
|
struct User {
|
2019-08-23 09:04:40 +02:00
|
|
|
age int
|
|
|
|
nums []int
|
|
|
|
last_name string [json:lastName]
|
|
|
|
is_registered bool [json:IsRegistered]
|
2019-10-18 19:17:23 +02:00
|
|
|
typ int [json:'type']
|
2019-06-27 14:28:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
fn test_parse_user() {
|
2019-10-18 19:17:23 +02:00
|
|
|
s := '{"age": 10, "nums": [1,2,3], "type": 0, "lastName": "Johnson", "IsRegistered": true}'
|
2019-06-27 14:28:12 +02:00
|
|
|
u := json.decode(User, s) or {
|
2019-08-23 01:54:39 +02:00
|
|
|
exit(1)
|
2019-06-27 14:28:12 +02:00
|
|
|
}
|
|
|
|
assert u.age == 10
|
2019-08-23 01:54:39 +02:00
|
|
|
assert u.last_name == 'Johnson'
|
2019-08-23 09:04:40 +02:00
|
|
|
assert u.is_registered == true
|
2019-06-27 14:28:12 +02:00
|
|
|
assert u.nums.len == 3
|
2019-08-23 01:54:39 +02:00
|
|
|
assert u.nums[0] == 1
|
|
|
|
assert u.nums[1] == 2
|
|
|
|
assert u.nums[2] == 3
|
2019-10-18 19:17:23 +02:00
|
|
|
assert u.typ == 0
|
2019-06-27 14:28:12 +02:00
|
|
|
}
|
|
|
|
|
2019-08-23 09:04:40 +02:00
|
|
|
fn test_encode_user(){
|
2019-10-18 19:17:23 +02:00
|
|
|
usr := User{ age: 10, nums: [1,2,3], last_name: 'Johnson', is_registered: true, typ: 0}
|
|
|
|
expected := '{"age":10,"nums":[1,2,3],"lastName":"Johnson","IsRegistered":true,"type":0}'
|
2019-08-23 09:04:40 +02:00
|
|
|
out := json.encode(usr)
|
|
|
|
assert out == expected
|
|
|
|
}
|
|
|
|
|
2019-08-22 13:22:16 +02:00
|
|
|
struct Color {
|
|
|
|
space string
|
|
|
|
point string [raw]
|
|
|
|
}
|
|
|
|
|
|
|
|
fn test_raw_json_field() {
|
|
|
|
color := json.decode(Color, '{"space": "YCbCr", "point": {"Y": 123}}') or {
|
|
|
|
println('text')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
assert color.point == '{"Y":123}'
|
|
|
|
assert color.space == 'YCbCr'
|
|
|
|
}
|
2020-05-04 20:43:22 +02:00
|
|
|
*/
|