mirror of
https://github.com/vlang/v.git
synced 2025-08-04 10:17:22 -04:00
74 lines
1.2 KiB
V
74 lines
1.2 KiB
V
import x.json2 as json
|
|
|
|
pub struct Stru {
|
|
val int
|
|
val2 string
|
|
val3 Stru2
|
|
}
|
|
|
|
pub struct Stru2 {
|
|
a int
|
|
brazilian_steak string
|
|
}
|
|
|
|
struct StructType[T] {
|
|
mut:
|
|
val T
|
|
}
|
|
|
|
struct StructTypeOption[T] {
|
|
mut:
|
|
val ?T
|
|
}
|
|
|
|
struct StructTypePointer[T] {
|
|
mut:
|
|
val &T
|
|
}
|
|
|
|
fn test_array_of_strings() {
|
|
// Structs
|
|
assert json.decode[StructType[string]]('{"val": "2"}')! == StructType{
|
|
val: '2'
|
|
}
|
|
assert json.decode[StructType[int]]('{"val": 2}')! == StructType{
|
|
val: 2
|
|
}
|
|
|
|
// maps
|
|
assert json.decode[map[string]string]('{"val": "2"}')! == {
|
|
'val': '2'
|
|
}
|
|
// assert json.decode[map[string]int]('{"val": 2}')! == {"val": 2}
|
|
|
|
// // nested map
|
|
// assert json.decode[map[string]map[string]string]('{"val": {"val2": "2"}}')! == {"val": {"val2": "2"}}
|
|
|
|
// nested struct
|
|
assert json.decode[Stru]('{"val": 1, "val2": "lala", "val3": {"a": 2, "brazilian_steak": "leleu"}}')! == Stru{
|
|
val: 1
|
|
val2: 'lala'
|
|
val3: Stru2{
|
|
a: 2
|
|
brazilian_steak: 'leleu'
|
|
}
|
|
}
|
|
|
|
// pretty print
|
|
assert json.decode[Stru]('{
|
|
"val": 1,
|
|
"val2": "lala",
|
|
"val3": {
|
|
"a": 2,
|
|
"brazilian_steak": "leleu"
|
|
}
|
|
}')! == Stru{
|
|
val: 1
|
|
val2: 'lala'
|
|
val3: Stru2{
|
|
a: 2
|
|
brazilian_steak: 'leleu'
|
|
}
|
|
}
|
|
}
|