将数据从 JSON 保存到对象

Posted

技术标签:

【中文标题】将数据从 JSON 保存到对象【英文标题】:Saving data from JSON to object 【发布时间】:2017-09-10 10:43:09 【问题描述】:

我在将数据从 json 推送到对象时遇到问题。

这个解决方案对我有用,但我对它不满意。看服务。 有没有更好的方法将此 json 中的数据保存到对象?

我从服务器获取的 json 如下所示:

"documents": "document": [
  
  "id": 1,
  "description": "Lorem ipsum",
  "date": "2017-03-01"
,
  "id": 2,
  "description": "Lorem ipsum",
  "date": "2017-04-01"

]

我的服务:

 downloadDocuments(id: number): Observable<DocumentsDTO[]>
   let headers = new Headers();
   headers.append('Content-Type', 'application/json');
   headers.append('Authorization', this.authorizationService.basic);
   let options = new RequestOptions(headers: headers);
   let body = JSON.stringify(id);
   return this.http
     .post(DOCUMENTS_URL, body, options)
     .map((response) => response.json().documents.document)
 

以及我调用此服务的组件:

documentsArray: Array<DocumentsDTO>;

downloadUserDocuments(id: number) 
   this.documentsService.downloadDocuments(id)
     .subscribe(documents =>
       if(documents !=null)
         this.documentsArray = [];
         documents.forEach((data) => 
           this.documentsArray.push(data);
         );
       
     );
 

此解决方案适用于我,但我对 . 有没有更好的方法将这个 json 中的数据保存到数组中?

【问题讨论】:

不开心是什么意思?你的问题不是很清楚。 为什么JSON.stringify(id); 如果id3 它将产生"3",而不是json... 在 service .map((response) => response.json().documents.document) 中查看这一行,我认为有更好的方法来解决它 【参考方案1】:

服务

return this.http
  .post(DOCUMENTS_URL, body, options)
  .map((res: Response) => 
    res.json().map((obj) => 
      new Document(obj.id, obj.description, obj.date)
    )
  )

这应该返回一个文档集合

【讨论】:

【参考方案2】:

我不知道你怎么能过去

.map((response) =&gt; response.json().documents.document)

这正是您的数组放置在响应中的位置,句号。您必须对后端进行更改才能更改此设置。

我不明白的是,为什么您在订阅中进行不必要的迭代,为什么不直接将即将到来的数组分配给您的 documentsArray?像这样:

this.documentsService.downloadDocuments(id)
  .subscribe(documents => 
     if(documents != null) 
       this.documentsArray = documents;
    
 );

【讨论】:

以上是关于将数据从 JSON 保存到对象的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 从 JSON 数组创建对象以将其保存在 SQL 数据库中

保存数据到文件的模块(configparser,json,pickle,shelve,xml)_python

如何通过 JSON 对象将数据保存到 mongodb 数据库?

将数据从 JSON 保存到 Realm

如何仅通过一次调用将一组对象保存到猫鼬数据库?

有没有办法将 JavaScript 对象保存到 JSON 文件中,我可以选择保存它的目录吗?