urain39/saw-rpc

关于响应数据的坑

Closed this issue · 1 comments

目前Aria2返回的数据中的类型都是字符串,这一点让人很头疼。我在想如果可以的话,我想写一个简单的预解析器,遍历整个返回的对象,将数据类型转换为标准类型。

function _preprocess(value: string): any {
	const l = value.length;

	if (l > 0 && l <= 20) {
		const n = Number(value);

		if (n || n === 0)
			return n;

		if (value === 'true')
			return true;

		if (value === 'false')
			return false;

		if (value === 'null')
			return null;
	}

	return value;
}

export function preprocess(object: any): any {
	let value: any,
		type: string;

	for (const key in object) {
		value = object[key];
		type = typeof value;

		if (type === 'string') {
			object[key] = _preprocess(value);
		} else if (type === 'object') {
			preprocess(value);
		}
	}

	return object;
}