首页 > 解决方案 > 如何像 typescript 中的数组一样解析 Json 对象。MAP Firestore 内的 MAP

问题描述

我想像driverDocumentDetails数组一样解析。

JSON是从android(Java)HashMap数据结构Angular Firestore MAP内部MAP实现的

{ 
   "driverDocumentDetails":{ 
      "fhgfh":{ 
         "documentCategoryID":"fhgfh",
         "documentCategoryName":"Pan Card",
         "documentUploadedDateTime":null,
         "reasonForRejection":null,
         "uploaded":false,
         "uploadedDocumentURL":null,
         "verified":false
      },
      "bjhbh":{ 
         "documentCategoryID":"bjhbh",
         "documentCategoryName":"Driving License",
         "documentUploadedDateTime":null,
         "reasonForRejection":null,
         "uploaded":false,
         "uploadedDocumentURL":null,
         "verified":false
      },
      "hgvjh":{ 
         "documentCategoryID":"hgvjh",
         "documentCategoryName":"NOC",
         "documentUploadedDateTime":null,
         "reasonForRejection":null,
         "uploaded":false,
         "uploadedDocumentURL":null,
         "verified":false
      }
   },
   "driverID":"bhbjhbjhbj",
   "hgchg":[ 
      { 
         "bjnk":"jhbjhb",
         "fhfyhgf":"jjb"
      },
      { 
         "gfhg":"jgjuy",
         "gh":"guguj"
      }
   ]
}
onCustom(recordRow) {
    console.log("onCustom Driver docs data---->",recordRow);
    this.crudService.ReadDriverDocuments(recordRow.data.id).subscribe(data => {

    this.driverDocument = data.data();
    console.log('ReadDriverDocuments',this.driverDocument);
    });
  }

标签: angulargoogle-cloud-firestoreangularfire2angular8

解决方案


您可以使用Object.keys获取键,然后将其映射到新数组中:

var driverDocumentDetailsArray = Object.keys(this.driverDocument.driverDocumentDetails)
    .map(key => this.driverDocument.driverDocumentDetails[key]);

或者,如果它可用,只需Object.values

var driverDocumentDetailsArray = Object.values(this.driverDocument.driverDocumentDetails);

推荐阅读