mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
json2: fix encoding of struct fields that are aliases (#16925)
This commit is contained in:
parent
0109fe66a6
commit
33a99fe833
@ -14,6 +14,7 @@ const fixed_time = time.Time{
|
|||||||
type StringAlias = string
|
type StringAlias = string
|
||||||
type BoolAlias = bool
|
type BoolAlias = bool
|
||||||
type IntAlias = int
|
type IntAlias = int
|
||||||
|
type StructAlias = StructType[int]
|
||||||
|
|
||||||
type SumTypes = bool | int | string
|
type SumTypes = bool | int | string
|
||||||
|
|
||||||
@ -197,4 +198,8 @@ fn test_alias() {
|
|||||||
assert json.encode(StructType[IntAlias]{}) == '{"val":0}'
|
assert json.encode(StructType[IntAlias]{}) == '{"val":0}'
|
||||||
assert json.encode(StructType[IntAlias]{ val: 0 }) == '{"val":0}'
|
assert json.encode(StructType[IntAlias]{ val: 0 }) == '{"val":0}'
|
||||||
assert json.encode(StructType[IntAlias]{ val: 1 }) == '{"val":1}'
|
assert json.encode(StructType[IntAlias]{ val: 1 }) == '{"val":1}'
|
||||||
|
|
||||||
|
assert json.encode(StructType[StructAlias]{}) == '{"val":{"val":0}}'
|
||||||
|
assert json.encode(StructType[StructAlias]{ val: StructType[int]{0} }) == '{"val":{"val":0}}'
|
||||||
|
assert json.encode(StructType[StructAlias]{ val: StructType[int]{1} }) == '{"val":{"val":1}}'
|
||||||
}
|
}
|
||||||
|
@ -271,6 +271,7 @@ fn (e &Encoder) encode_struct[U](val U, level int, mut wr io.Writer) ! {
|
|||||||
// e.encode_array(value, level, mut wr)!
|
// e.encode_array(value, level, mut wr)!
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
e.encode_struct(value, level + 1, mut wr)!
|
||||||
// e.encode_value_with_level(value, level + 1, mut wr)!
|
// e.encode_value_with_level(value, level + 1, mut wr)!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -217,3 +217,22 @@ fn test_pretty() {
|
|||||||
"c": "aliens"
|
"c": "aliens"
|
||||||
}'
|
}'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Aa {
|
||||||
|
sub AliasType
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Bb {
|
||||||
|
a int
|
||||||
|
}
|
||||||
|
|
||||||
|
type AliasType = Bb
|
||||||
|
|
||||||
|
fn test_encode_alias_field() {
|
||||||
|
s := json.encode(Aa{
|
||||||
|
sub: Bb{
|
||||||
|
a: 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
assert s == '{"sub":{"a":1}}'
|
||||||
|
}
|
||||||
|
@ -371,26 +371,6 @@ fn test_encode_sumtype_defined_ahead() {
|
|||||||
assert ret == '{"value":0,"_type":"GPScale"}'
|
assert ret == '{"value":0,"_type":"GPScale"}'
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Aa {
|
|
||||||
sub AliasType
|
|
||||||
}
|
|
||||||
|
|
||||||
struct Bb {
|
|
||||||
a int
|
|
||||||
}
|
|
||||||
|
|
||||||
type AliasType = Bb
|
|
||||||
|
|
||||||
//! FIX: returning null
|
|
||||||
fn test_encode_alias_field() {
|
|
||||||
s := json.encode(Aa{
|
|
||||||
sub: Bb{
|
|
||||||
a: 1
|
|
||||||
}
|
|
||||||
})
|
|
||||||
assert s == '{"sub":{"a":1}}'
|
|
||||||
}
|
|
||||||
|
|
||||||
struct APrice {}
|
struct APrice {}
|
||||||
|
|
||||||
struct Association {
|
struct Association {
|
||||||
|
Loading…
Reference in New Issue
Block a user