Take into account only not skipped flatten fields when choose serialization form

Consequence: `FlattenSkipSerializing`
- uses `serialize_struct` instead of `serialize_map`
This commit is contained in:
Mingun
2024-08-11 19:56:27 +05:00
parent 547d843cca
commit 77a6a9d4e1
3 changed files with 5 additions and 39 deletions
+4 -1
View File
@@ -297,7 +297,10 @@ fn serialize_struct(params: &Parameters, fields: &[Field], cattrs: &attr::Contai
u32::MAX
);
if cattrs.has_flatten() {
let has_non_skipped_flatten = fields
.iter()
.any(|field| field.attrs.flatten() && !field.attrs.skip_serializing());
if has_non_skipped_flatten {
serialize_struct_as_map(params, fields, cattrs)
} else {
serialize_struct_as_struct(params, fields, cattrs)