首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析角6中的JSON

如何解析角6中的JSON
EN

Stack Overflow用户
提问于 2019-03-06 16:06:50
回答 2查看 1.2K关注 0票数 1

我有一个像下面这样的json。

代码语言:javascript
复制
 private _ELEMENT_DATA: Account[] = [ 
  {"id":{"name":"abc", "value":"123"}},
  {"id":{"name":"abc", "value":"123"}},
  {"id":{"name":"abc", "value":"123"}}
 ]

请帮我分析一下角6。

代码语言:javascript
复制
export class Account{
 name: string;
 value: string;
}

我的服务班是这样的

代码语言:javascript
复制
getAllAccouts(): Observable<any[]> {
// return this.httpClient.get<Account[]>(this.ELEMENT_DATA);
return of<Account[]>(this._ELEMENT_DATA);
}  
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-06 18:09:52

如果您正在寻找与类Account匹配的结果,那么首先,您的"json“(实际上是JS数组)不能具有Account[]类型,因此必须是一个保存Account对象的模型。这里我借用杰米的模型:

代码语言:javascript
复制
export interface AccountContainer {
  id: Account;
}

export interface Account {
  name: string;
  value: string;
}

private _ELEMENT_DATA: AccountContainer[] = [
  { "id": { "name": "abc", "value": "123" } },
  { "id": { "name": "abc", "value": "123" } },
  { "id": { "name": "abc", "value": "123" } }
]

另外,由于您没有构造函数或类的方法,所以接口就足够了。因此,要获得您想要的结果,请执行以下操作:

代码语言:javascript
复制
import { map } from 'rxjs/operators';

// ....

getAllAccouts(): Observable<Account[]> {
  return of<AccountContainer[]>(this._ELEMENT_DATA).pipe(
    map(x => x.map(y => <Account>{ name: y.id.name, value: y.id.value }))
  )
}

这样,就可以得到一个与Account接口相匹配的对象数组。

票数 0
EN

Stack Overflow用户

发布于 2019-03-06 16:09:47

这个JSON将不能被解析到类中。

你需要这样的一门课:

代码语言:javascript
复制
export class AccountContainer {
    id: Account;
}

并将服务代码更改为:

代码语言:javascript
复制
getAllAccouts(): Observable<AccountContainer[]> {
    return of<AccountContainer[]>(this._ELEMENT_DATA);
}  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55027460

复制
相关文章

相似问题

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