1 | |
2 | // encode is a generic function that encodes a type into a JSON string. |
3 | pub fn encode[T](val T) string { |
4 | + $if T is $Array { |
5 | + $compile_error('Cannot use `json.encode` to encode array. Try `json.encode_array` instead') |
6 | + } |
7 | mut sb := strings.new_builder(64) |
8 | + |
9 | defer { |
10 | unsafe { sb.free() } |
11 | } |
12 | - $if T is $Array { |
13 | - mut array_of_any := []Any{} |
14 | - for value in val { |
15 | - array_of_any << value |
16 | - } |
17 | - default_encoder.encode_value(array_of_any, mut sb) or { |
18 | - dump(err) |
19 | - default_encoder.encode_value[Null](null, mut sb) or {} |
20 | - } |
21 | - } $else { |
22 | - default_encoder.encode_value(val, mut sb) or { |
23 | - dump(err) |
24 | - default_encoder.encode_value[Null](null, mut sb) or {} |
25 | - } |
26 | + |
27 | + default_encoder.encode_value(val, mut sb) or { |
28 | + dump(err) |
29 | + default_encoder.encode_value[Null](null, mut sb) or {} |
30 | + } |
31 | + |
32 | + return sb.str() |
33 | +} |
34 | + |
35 | +// encode_array is a generic function that encodes a array into a JSON string. |
36 | +pub fn encode_array[T](val []T) string { |
37 | + mut sb := strings.new_builder(64) |
38 | + |
39 | + defer { |
40 | + unsafe { sb.free() } |
41 | } |
42 | + |
43 | + default_encoder.encode_array(val, 1, mut sb) or { |
44 | + dump(err) |
45 | + default_encoder.encode_value[Null](null, mut sb) or {} |
46 | + } |
47 | + |
48 | return sb.str() |
49 | } |
50 | |