v2 / vlib / json / tests / json_decode_with_generic_array_test.v
44 lines · 39 sloc · 960 bytes · 8ebbacecd60366ac4ba68aa35f9b0e7a0e56ff61
Raw
1import json
2
3struct Response[T] {
4 time string
5 cars []T
6}
7
8struct Car {
9 brand string
10 power int
11}
12
13fn string_to_response[T](text string) {
14 result := json.decode([]Response[T], text) or { panic(err) }
15 println(result)
16 assert result.len == 2
17 assert result[0].time == '12ms'
18 assert result[0].cars[0].brand == 'Ferrari'
19 assert result[0].cars[0].power == 232
20 assert result[0].cars[1].brand == 'Lamborghini'
21 assert result[0].cars[1].power == 345
22 assert result[1].time == '12ms'
23 assert result[1].cars[0].brand == 'Ferrari'
24 assert result[1].cars[0].power == 232
25 assert result[1].cars[1].brand == 'Lamborghini'
26 assert result[1].cars[1].power == 345
27}
28
29fn test_json_decode_with_generic_array() {
30 text := '[
31{ "time":"12ms",
32 "cars":[
33 {"brand":"Ferrari","power":232},
34 {"brand":"Lamborghini", "power":345}
35 ]},
36{ "time":"12ms",
37 "cars":[
38 {"brand":"Ferrari","power":232},
39 {"brand":"Lamborghini", "power":345}
40 ]}
41]'
42
43 string_to_response[Car](text)
44}
45