具有子数组返回错误的 Angular2 json 对象
Angular2 json object with child array returning error
我是 运行 Angular2 v4.4.0beta。我正在尝试 return 一个对象,它是我的 api 的子对象。端点被调用,这里是 json:
{
"companyId":3,
"name":"Third",
"description":null,
"characters":[{
"characterId":3,
"name":"Third",
"description":null,
"status":null,
"companyId":3,
"userId":null
}]
}
这里是Company.ts
import { Component } from '@angular/core';
import { Character } from './Character';
export class Company {
companyId: number;
name: string;
description: number;
characters: Character[];
}
和Character.ts
import { Component } from '@angular/core';
export class Character {
characterId: number;
name: string;
description: string;
status: number;
userId: string;
companyId: number;
}
这是我在组件中的Get函数
getCompany(id: number) {
this.companyService.getCompany(id)
.subscribe(
(data: Company) => this.company = data,
error => this.errorMessage = <any>error);
}
最后是服务功能
getCompany(id: number): Observable<Company> {
return this.http.get(this.url + "/Get/" + id,
{ headers: this.authService.authJsonHeaders() })
.map((resp: Response) => resp.json() as Company)
.catch(this.handleError);
}
如果我单独获取项目,两种模型都可以工作,但如果我 return 公司内的角色,则会出错。
Chrome 调试器显示此错误
Failed to load resource: net::ERR_CONNECTION_RESET
组件记录此错误
0 - {"isTrusted":true}
我错过了什么?
编辑:
authHeader 正在调用中插入 JWT
authJsonHeaders() {
let header = new Headers();
header.append('Content-Type', 'application/json');
header.append('Accept', 'application/json');
header.append('Authorization', 'Bearer ' +
sessionStorage.getItem('bearer_token'));
return header;
}
好的,
显然问题出在序列化程序中。序列化子项时出错,但无论如何 return 有效 json。
我在更多连接元素上添加了 [JsonIgnore] 标签以正确防止循环引用,错误消失了。
我是 运行 Angular2 v4.4.0beta。我正在尝试 return 一个对象,它是我的 api 的子对象。端点被调用,这里是 json:
{
"companyId":3,
"name":"Third",
"description":null,
"characters":[{
"characterId":3,
"name":"Third",
"description":null,
"status":null,
"companyId":3,
"userId":null
}]
}
这里是Company.ts
import { Component } from '@angular/core';
import { Character } from './Character';
export class Company {
companyId: number;
name: string;
description: number;
characters: Character[];
}
和Character.ts
import { Component } from '@angular/core';
export class Character {
characterId: number;
name: string;
description: string;
status: number;
userId: string;
companyId: number;
}
这是我在组件中的Get函数
getCompany(id: number) {
this.companyService.getCompany(id)
.subscribe(
(data: Company) => this.company = data,
error => this.errorMessage = <any>error);
}
最后是服务功能
getCompany(id: number): Observable<Company> {
return this.http.get(this.url + "/Get/" + id,
{ headers: this.authService.authJsonHeaders() })
.map((resp: Response) => resp.json() as Company)
.catch(this.handleError);
}
如果我单独获取项目,两种模型都可以工作,但如果我 return 公司内的角色,则会出错。
Chrome 调试器显示此错误
Failed to load resource: net::ERR_CONNECTION_RESET
组件记录此错误
0 - {"isTrusted":true}
我错过了什么?
编辑: authHeader 正在调用中插入 JWT
authJsonHeaders() {
let header = new Headers();
header.append('Content-Type', 'application/json');
header.append('Accept', 'application/json');
header.append('Authorization', 'Bearer ' +
sessionStorage.getItem('bearer_token'));
return header;
}
好的,
显然问题出在序列化程序中。序列化子项时出错,但无论如何 return 有效 json。
我在更多连接元素上添加了 [JsonIgnore] 标签以正确防止循环引用,错误消失了。