1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

json: allow decode/encode of alias to primitive type (#18003)

This commit is contained in:
Felipe Pena
2023-04-21 13:39:40 -03:00
committed by GitHub
parent 456968b07d
commit 488e14bf99
2 changed files with 52 additions and 3 deletions

View File

@@ -0,0 +1,40 @@
import json
struct Test {
field MySumType
}
type MyInt = int
type MyString = string
type MySumType = MyString | int | string
fn test_alias_to_primitive() {
mut test := Test{
field: MyString('foo')
}
mut encoded := json.encode(test)
assert dump(encoded) == '{"field":"foo"}'
assert json.decode(Test, '{"field": "foo"}')!.field == MySumType('foo')
test = Test{
field: 'foo'
}
encoded = json.encode(test)
assert dump(encoded) == '{"field":"foo"}'
assert json.decode(Test, '{"field":"foo"}')! == test
test = Test{
field: 1
}
encoded = json.encode(test)
assert dump(encoded) == '{"field":1}'
assert json.decode(Test, '{"field":1}')! == test
mut test2 := MyString('foo')
encoded = json.encode(test2)
assert dump(encoded) == '"foo"'
mut test3 := MyInt(1000)
encoded = json.encode(test3)
assert dump(encoded) == '1000'
}