解析 json 响应给出未定义
Parsing json response gives undefined
我正在使用 angularfire2 从实时数据库中获取数据。响应如下
{"type":"value",
"payload":{
"-LJXFAd_q3Cin64EBc7H":
{"_date":"9-8-2018",
"_deliveryType":"Pick up",
"_estDeliveryTime":"2018-08-10T11:43:57.164Z",
"_location":""}
}}
这个在做
有效负载中的元素是使用推送创建的密钥。我不知道它可以参考,所以我如何获取 "LJXFAd_q3Cin64EBc7H" 下的数据?
有效负载中有很多这样的条目,我需要全部获取。
用于获取上述内容的代码是:
getOrderHistory(uid:string){
console.log('start of getOrderHistory with uid:' + uid)
return new Promise((resolve, reject) =>
{
this.db.object("/users/" + uid + "/orders").snapshotChanges().subscribe(
res => {
//console.log('response:' + res)
resolve(res)
},
err => {
console.log(err)
reject(err)
}
)
})
}
通常情况下,实时数据库会发送快照,您可以在其中执行 snapshot.id 来获取 id 和 .data(或我现在忘记的 .data())以获取有效负载。
JSON.parse
然后迭代它或用点符号或括号符号得到它。要获得 属性:
obj[payload][LJXFAd_q3Cin64EBc7H]
迭代它:
function eachRecursive(obj)
{
for (var k in obj)
{
if (typeof obj[k] == "object" && obj[k] !== null)
eachRecursive(obj[k]);
else
// do something...
}
}
试试这个,它将每个快照映射到一个包含其键和值的对象。
this.db.object("/users/" + uid + "/orders").snapshotChanges()
.map(snapshot => {
const key = snapshot.key;
const data = snapshot.payload.val();
return { key, ...data };
})
.subscribe(res => {
resolve(res);
},
err => {
console.log(err);
reject(err);
});
我正在使用 angularfire2 从实时数据库中获取数据。响应如下
{"type":"value",
"payload":{
"-LJXFAd_q3Cin64EBc7H":
{"_date":"9-8-2018",
"_deliveryType":"Pick up",
"_estDeliveryTime":"2018-08-10T11:43:57.164Z",
"_location":""}
}}
这个在做
有效负载中的元素是使用推送创建的密钥。我不知道它可以参考,所以我如何获取 "LJXFAd_q3Cin64EBc7H" 下的数据?
有效负载中有很多这样的条目,我需要全部获取。
用于获取上述内容的代码是:
getOrderHistory(uid:string){
console.log('start of getOrderHistory with uid:' + uid)
return new Promise((resolve, reject) =>
{
this.db.object("/users/" + uid + "/orders").snapshotChanges().subscribe(
res => {
//console.log('response:' + res)
resolve(res)
},
err => {
console.log(err)
reject(err)
}
)
})
}
通常情况下,实时数据库会发送快照,您可以在其中执行 snapshot.id 来获取 id 和 .data(或我现在忘记的 .data())以获取有效负载。
JSON.parse
然后迭代它或用点符号或括号符号得到它。要获得 属性:
obj[payload][LJXFAd_q3Cin64EBc7H]
迭代它:
function eachRecursive(obj)
{
for (var k in obj)
{
if (typeof obj[k] == "object" && obj[k] !== null)
eachRecursive(obj[k]);
else
// do something...
}
}
试试这个,它将每个快照映射到一个包含其键和值的对象。
this.db.object("/users/" + uid + "/orders").snapshotChanges()
.map(snapshot => {
const key = snapshot.key;
const data = snapshot.payload.val();
return { key, ...data };
})
.subscribe(res => {
resolve(res);
},
err => {
console.log(err);
reject(err);
});