您可以查看响应,将下划线后的所有字符替换为大写版本,并动态删除下划线,基本上是一个蛇到骆驼的大小写函数:
function snakeToCamel(str: string): string {
return str.replace(/_([a-z])/g, (_, group1) => group1.toUpperCase());
}
function convertKeysToCamelCase(obj: Record<string, any>): Record<string, any> {
const result: Record<string, any> = {};
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
const camelKey = snakeToCamel(key);
result[camelKey] = obj[key];
}
}
return result;
}
您也可以使用“类转换器”模块(建议使用):
npm i class-transformer
然后这样调整您的代码:
import { Expose } from "class-transformer"
export class ChatHubInfo {
@Expose({name: "hub_url"})
hubUrl: string = undefined!
/*...etc...*/
}
然后使用类转换器模块提供的plainToClass函数生成带有JSON响应的Object:
import { plainToClass } from "class-transformer"
const chatHubInfo = plainToClass(ChatHubInfo, {
"hub_url": "https://localhost:8080/",
"access_token": "v4.public.eY..."
});