@@ -203,7 +203,6 @@ def get_query_params(query_params: dataclass) -> dict[str, list[str]]:
203
203
204
204
param_name = f .name
205
205
f_name = metadata .get ("field_name" )
206
-
207
206
serialization = metadata .get ('serialization' , '' )
208
207
if serialization != '' :
209
208
params = params | _get_serialized_query_params (
@@ -246,7 +245,6 @@ def _get_serialized_query_params(metadata: dict, field_name: str, obj: any) -> d
246
245
params : dict [str , list [str ]] = {}
247
246
248
247
serialization = metadata .get ('serialization' , '' )
249
-
250
248
if serialization == 'json' :
251
249
params [metadata .get ("field_name" , field_name )] = marshal_json (obj )
252
250
@@ -520,7 +518,6 @@ def serialize_form(data: dataclass, meta_string: str) -> dict[str, any]:
520
518
521
519
f_name = metadata ["field_name" ]
522
520
if is_dataclass (value ):
523
- print (f_name )
524
521
if "style" not in metadata or ("json" in metadata and metadata ["json" ] is True ):
525
522
if f_name not in form :
526
523
form [f_name ] = []
@@ -530,9 +527,15 @@ def serialize_form(data: dataclass, meta_string: str) -> dict[str, any]:
530
527
form = form | serialize_form (value , "form" )
531
528
532
529
elif isinstance (value , dict ):
533
- serialize_dict (value , metadata ["explode" ], f_name , form )
530
+ if "json" in metadata and metadata ["json" ] is True :
531
+ if f_name not in form :
532
+ form [f_name ] = []
533
+ form [f_name ].append (json .dumps (value ))
534
+ else :
535
+ explode = "explode" in metadata and metadata ["explode" ] is True
536
+ serialize_dict (value , explode , f_name , form )
534
537
elif isinstance (value , list ):
535
- if metadata ["explode" ] is True :
538
+ if "explode" in metadata and metadata ["explode" ] is True :
536
539
if f_name not in form :
537
540
form [f_name ] = []
538
541
for item in value :
@@ -594,7 +597,12 @@ def _populate_form(field_name: str, explode: boolean, obj: any, get_field_name_f
594
597
items = []
595
598
for key , value in obj .items ():
596
599
if explode :
597
- params [key ] = value
600
+ # Python uses True and False instead of true and false for booleans;
601
+ # This json encodes the values _only_ if the value is a boolean.
602
+ if value is True or value is False :
603
+ params [key ] = json .dumps (value )
604
+ else :
605
+ params [key ] = value
598
606
else :
599
607
items .append (f'{ key } ,{ value } ' )
600
608
0 commit comments