首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 5可观测映射到Json数组

Angular 5可观测映射到Json数组
EN

Stack Overflow用户
提问于 2018-05-07 17:42:40
回答 3查看 7.3K关注 0票数 3

我的后台返回如下:

代码语言:javascript
复制
{
    "FirstResponse": [
        {
            "MyField1": "AAA",
            "MyField2": "AAAAAAA"
        },
        {
            "MyField1": "BBB",
            "MyField2": "BBBBBBB"
        },
        {
            "MyField1": "CCC",
            "MyField2": "CCCCC"
        }
    ],
    "SecondResponse": [
        {
            "FirstName": "FirstNameA",
            "LastName": "LastNameA"
        },
        {
            "FirstName": "FirstNameB",
            "LastName": "LastNameB"
        }
    ]   
}

我希望将FirstReponse映射到一个变量,并将SecondResponse映射到另一个变量。

我如何改编下面的代码?

代码语言:javascript
复制
search(): Observable<any> {
  let apiURL = `......`;
  return this.http.get(apiURL) 
      .map(res => res.json())
}

更新: Excepted result In one variable this:

代码语言:javascript
复制
[
    {
        "MyField1": "AAA",
        "MyField2": "AAAAAAA"
    },  
    {
        "MyField1": "BBB",
        "MyField2": "BBBBBBB"
    },
    {
        "MyField1": "CCC",
        "MyField2": "CCCCC"
    }
]

一秒钟内:

代码语言:javascript
复制
[
    {
        "FirstName": "FirstNameA",
        "LastName": "LastNameA"
    },
    {
        "FirstName": "FirstNameB",
        "LastName": "LastNameB"
    }
]
EN

回答 3

Stack Overflow用户

发布于 2018-05-07 17:53:08

您可以创建一个导出模型类的新文件,然后将其分配给返回的Observable类型。类似于:

新建model.ts文件

代码语言:javascript
复制
class FieldModel {
    Field1: string;
    Field1: string;
}
export class valuesModel {
    MyValues: Array<FieldModel>;
}

在service.ts上

代码语言:javascript
复制
import { valuesModel } from 'model';

search(): Observable<valuesModel> {
    let apiURL = `https://jsonplaceholder.typicode.com/users`;
    return this.http.get(apiURL) 
        .map(res => res.json())
}
票数 0
EN

Stack Overflow用户

发布于 2018-05-07 18:37:55

我不明白你想要什么,因为你没有提供示例结果,

但是,尝试这行- change line:

代码语言:javascript
复制
.map(res => res.json())

代码语言:javascript
复制
.map(res => res.json().MyValues )

使用这个,你将在顶层得到类似的数组,就像你在下面的注释中提供的链接,你的问题是:https://jsonplaceholder.typicode.com/users

更新(问题更新9.10.2018之后)

当前.map(res => res.json())返回的对象有两个字段(变量) "FirstResponse“和"SecondResponse”。例如,您可以通过以下方式访问它(我从head编写代码):

代码语言:javascript
复制
public async loadData() 
{
   let data  = await this.yourService.search().toPromise();

   let firstVariable = data.FirstResponse;
   let secondVariable = data.SecondResponse;     

   ...
}

代码语言:javascript
复制
search(): Observable<any> {
  let apiURL = `......`;
  return this.http.get(apiURL) 
      .map( (res) => { 
          let data = res.json();
          return {
              firstVariable: data.FirstResponse,
              secondVariable: data.SecondResponse,  
          }
      })
}
票数 0
EN

Stack Overflow用户

发布于 2018-05-07 19:13:59

请检查此方法,使用import { Http, Response} from '@angular/http'; import { Observable } from 'rxjs/Observable';

代码语言:javascript
复制
public search(){
let apiURL = `https://jsonplaceholder.typicode.com/users`;
return this.http.get(apiURL) 
  .map((res: Response)=> return res.json();)
  .catch((error: Response) => {
        return Observable.throw('Something went wrong');   
  });
}

对于此search()方法,您可以从您的组件订阅。

如果您想将输出映射到受尊重的模式,请提供我可以帮助的same.So格式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50211202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档