|
|
|
|
Attention |
Topic was automatically imported from the old Question2Answer platform. |
|
Asked By |
longness |
|
Old Version |
Published before Godot 3 was released. |
I have a query parameters array like
var query = {
'firm': 1
, 'type': 2
, 'duedate' : {
'start':01-01-1970
, 'end':02-06-2016
}
}
I expect it to be encoded like
?duedate[end]=02-06-2016&duedate[start]=01-01-1970&firm=1&type=2
But output is like below
?duedate=%28end%3A02-06-2016%29%2C%20%28start%3A01-01-1970%29&firm=1&type=2
What am I missing?
system
4
|
|
|
|
Reply From: |
longness |
I have coded a recursive function in GDscript to make this work. It is a bit hacky but may be useful.
func recursive_encode_parameters(query, parents = []):
var parents_orj = []
for parent in parents:
parents_orj.append(parent)
for key in query:
var parameter = ''
parents = []
for parent in parents_orj:
parents.append(parent)
var value = query[key]
parents.append(str(key))
if(typeof(value) == TYPE_DICTIONARY):
recursive_encode_parameters(query[key], parents)
else:
var idx = 0
for parent in parents:
var quotedparent = HTTPClient.query_string_from_dict({'':parent}).right(1)
if(idx == 0):
parameter = quotedparent + parameter
else:
parameter = parameter + '[' + quotedparent + ']'
idx = idx + 1
parameter = parameter + HTTPClient.query_string_from_dict({'':value})
parameters.append(parameter)