Javascript JSON对象的Typescript模型类
我有以下JSON:Javascript JSON对象的Typescript模型类,javascript,json,angular,oop,typescript,Javascript,Json,Angular,Oop,Typescript,我有以下JSON: { "-KtDGS8GdOcJ33Lcqjok": { "2017": { "address": "test address 1", "area2": "3212", "author": "STOkzlbT4OeOcbO2ed9Z7dvxZk92", "category": "Solar", "client": "Test Contact", "createdAt": 15
{
"-KtDGS8GdOcJ33Lcqjok": {
"2017": {
"address": "test address 1",
"area2": "3212",
"author": "STOkzlbT4OeOcbO2ed9Z7dvxZk92",
"category": "Solar",
"client": "Test Contact",
"createdAt": 1504551753483,
"lastEdited": 1504551805648,
"lastEditedBy": "STOkzlbT4OeOcbO2ed9Z7dvxZk92",
"lat": "18.490362758827665",
"lng": "-69.93279173970221",
"name": "17002 - test",
"pictures": {
"a95ff256-0f05-3122-a6b5-a88d3fd14c3f": true
},
"price": "213",
"province": "-KtDBavhyLhrpV8hDuj2",
"sector": "-KtDBqgy3CqpTv6c_iQ9",
"totalPrice": "1234",
"year": "2017"
}
},
"-KtDGaU9BB6eNj-MsyBg": {
"2015": {
"address": "test 2a",
"area1": "3245",
"author": "STOkzlbT4OeOcbO2ed9Z7dvxZk92",
"category": "Local: comercio",
"client": "test2 ",
"createdAt": 1504552100747,
"lastEdited": 1504552100747,
"lastEditedBy": "STOkzlbT4OeOcbO2ed9Z7dvxZk92",
"lat": "18.489417118875462",
"level": "4",
"lng": "-69.92930956184864",
"name": "15002 - test2a ",
"parking": "12",
"plaza": "Agora",
"price": "213",
"province": "-KtDBavhyLhrpV8hDuj2",
"restrooms": "2",
"sector": "-KtDBqgy3CqpTv6c_iQ9",
"totalPrice": "213",
"year": "2015"
},
"2017": {
"address": "test 2",
"area1": "3245",
"author": "STOkzlbT4OeOcbO2ed9Z7dvxZk92",
"category": "Local: comercio",
"client": "test2 ",
"createdAt": 1504551790632,
"lastEdited": 1504551790632,
"lastEditedBy": "STOkzlbT4OeOcbO2ed9Z7dvxZk92",
"lat": "18.489417118875462",
"level": "4",
"lng": "-69.92930956184864",
"name": "17003 - test2b",
"parking": "12",
"plaza": "Agora",
"price": "213",
"province": "-KtDBavhyLhrpV8hDuj2",
"restrooms": "2",
"sector": "-KtDBqgy3CqpTv6c_iQ9",
"totalPrice": "213",
"year": "2017"
}
},
"codeCounter": {
"2015": 2,
"2017": 5
},
"totals": {
"2015": 1,
"2017": 5
}
}
它基本上是一个对象列表,每个对象都包含一个或多个嵌套对象,这些对象在制作年份包装(实际上是房屋、公寓等)
我遇到的问题是试图映射“年”对象(2017年、2015年等),因为它们可能存在,也可能不存在。例如,一个对象可能有2017、2016两个条目,或者只有一个条目,等等
我已经有了一个我认为有效的“Property”模型类,它包含所有地址、作者、类别等字段。我正在尝试创建outter类,该类将包含以下属性对象的列表:
export interface PropertyWrapper {
[year: number]: Property;
}
我尝试将JSON解析为PropertyRapper[]数组,这样我就可以通过调用:
for (const pw of data) {
console.log(pw[2017]);
}
但这只起作用,因为我已经知道该对象有一个“2017”条目。无论是否有“2017”、“2010”或10个条目,我如何动态地执行此操作?您正在寻找类似的内容吗。 首先获取对象键,然后遍历这些键,然后遍历嵌套的对象键
var jso={
“-KtDGS8GdOcJ33Lcqjok”:{
"2017": {
“地址”:“测试地址1”,
“区域2”:“3212”,
“作者”:“STOkzlbT4OeOcbO2ed9Z7dvxZk92”,
“类别”:“太阳能”,
“客户”:“测试联系人”,
“createdAt”:1504551753483,
“最近编辑”:1504551805648,
“最新编辑人”:“STOkzlbT4OeOcbO2ed9Z7dvxZk92”,
“lat”:“18.490362758827665”,
“液化天然气”:“-69.93279173970221”,
“名称”:“17002-测试”,
“图片”:{
“a95ff256-0f05-3122-a6b5-a88d3fd14c3f”:正确
},
“价格”:“213”,
“省”:“-KtDBavhyLhrpV8hDuj2”,
“扇区”:“-KtDBqgy3CqpTv6c_iQ9”,
“总价”:“1234”,
“年份”:“2017年”
}
},
“-KtDGaU9BB6eNj MsyBg”:{
"2015": {
“地址”:“测试2a”,
“区域1”:“3245”,
“作者”:“STOkzlbT4OeOcbO2ed9Z7dvxZk92”,
“类别”:“本地:comercio”,
“客户端”:“test2”,
“createdAt”:1504552100747,
“最近编辑”:1504552100747,
“最新编辑人”:“STOkzlbT4OeOcbO2ed9Z7dvxZk92”,
“lat”:“18.489417118875462”,
“级别”:“4”,
“液化天然气”:-69.92930956184864“,
“名称”:“15002-test2a”,
“停车”:“12”,
“广场”:“广场”,
“价格”:“213”,
“省”:“-KtDBavhyLhrpV8hDuj2”,
“洗手间”:“2”,
“扇区”:“-KtDBqgy3CqpTv6c_iQ9”,
“总价”:“213”,
“年份”:“2015年”
},
"2017": {
“地址”:“测试2”,
“区域1”:“3245”,
“作者”:“STOkzlbT4OeOcbO2ed9Z7dvxZk92”,
“类别”:“本地:comercio”,
“客户端”:“test2”,
“createdAt”:1504551790632,
“最近编辑”:1504551790632,
“最新编辑人”:“STOkzlbT4OeOcbO2ed9Z7dvxZk92”,
“lat”:“18.489417118875462”,
“级别”:“4”,
“液化天然气”:-69.92930956184864“,
“名称”:“17003-test2b”,
“停车”:“12”,
“广场”:“广场”,
“价格”:“213”,
“省”:“-KtDBavhyLhrpV8hDuj2”,
“洗手间”:“2”,
“扇区”:“-KtDBqgy3CqpTv6c_iQ9”,
“总价”:“213”,
“年份”:“2017年”
}
},
“编解码器”:{
"2015": 2,
"2017": 5
},
“总数”:{
"2015": 1,
"2017": 5
}
};
Object.keys(jso.forEach)函数(key){
Object.key(jso[key]).forEach(函数(nestedKey){
log(`nestedKey:${nestedKey}\n`,jso[key][nestedKey]);
});
});代码>太棒了,这很有效。甚至不必使用模型类。谢谢