Table of Contents
こんなJSONがあって親エリアがネストされている場合
エリアのJSON
{
"area_code": "HNL",
"area_name": "Honolulu",
"parent_area": {
"area_code": "HI",
"area_name": "Oahu Island",
"parent_area": {
"area_code": "5",
"area_name": "Hawaii",
"parent_area": {
"area_code": null,
"area_name": "Root"
}
}
}
}
Area.ts
class Area {
code: string; // エリアコード
name: string; // エリア名
constructor(code: string, name: string) {
this.code = code;
this.name = name;
}
}
ネストした親オブジェクトをエリアクラスにして配列にする
function nestAreas(areaObj: any, key: string, areas: Area[] = []) {
areas.push(new Area(areaObj.area_code, areaObj.area_name));
if (areaObj[key] && typeof areaObj[key] === 'object') {
nestAreas(areaObj[key], key, areas);
}
return areas;
}