Files
d81e73bb-ceb0-4c2d-b0e0-7e6…/src/clientsdk/querySerializer.ts
“dongming” ed40350aeb first commit
2025-12-28 22:43:26 +08:00

29 lines
870 B
TypeScript

export const customQuerySerializer = (queryParams: any) => {
const search: string[] = [];
const serialize = (name: string, value: any) => {
if (value === undefined || value === null) return;
if (Array.isArray(value)) {
value.forEach((v, i) => {
serialize(`${name}[${i}]`, v);
});
} else if (typeof value === 'object' && value !== null && !(value instanceof Date)) {
Object.entries(value).forEach(([key, v]) => {
serialize(`${name}[${key}]`, v);
});
} else {
const val = value instanceof Date ? value.toISOString() : String(value);
search.push(`${encodeURIComponent(name)}=${encodeURIComponent(val)}`);
}
};
if (queryParams && typeof queryParams === 'object') {
for (const key in queryParams) {
serialize(key, queryParams[key]);
}
}
return search.join('&');
};