JSON数组的值转成字符串后显示undefined
The value of the JSON array displays undefiend after converting it into string
我的部分service.spec.ts如下:
service.spec.ts
it('should mock the http requests', inject([Service, MockBackend], (service, mockBackend) => {
let result:any;
mockBackend.connections.subscribe((connection) => {
connection.mockRespond(new Response(new ResponseOptions({
body: JSON.stringify(mockResponse),
})));
});
service.getGoogle().subscribe((heroes: any) => {
result = heroes;
console.log('1', result);
console.log('2', result[0]); //Logs shows this as undefined!!I need to print here "aditya"
});
}))
mockResponse的取值如下:
const mockResponse = [{"name":"aditya"},{"name":"xyz"}];
日志:
LOG: 'Inside service'
LOG: '1', Response{_body: '[{"name":"aditya"},{"name":"xyz"}]', status: null, ok: false, statusText: null, headers: null, type: null, url: null}
LOG: '2', undefined
Other method
√ should mock the http requests
注意:'[{"name":"aditya"},{"name":"xyz"}]'
这是一个字符串!因为我已经将它转换成 JSON.stringify(mockResponse)
,如果我不会使用它,那么它会显示为 Object: [....], Object: [....]
。
不确定你的问题是什么。代码似乎在做你所要求的。
这个:
JSON.stringify(mockResponse),
将数组转换为字符串。然后,您将该字符串设为具有键 body
的 object 的值。并归还它。
您的订阅方法正在接收整个 Response
object,尽管从变量名称来看,我们假设您期望的是 Heroes
object。 (如果您将类型设置为 any
以外的类型,Typescript 将捕获此类错误)
现在,当您记录 result
时,它会记录您刚刚收到的结果 object。其中包括 body 持有你的字符串化 object。
result[0]
为空,因为 result
不是数组。
我想你想要:
service.getGoogle().subscribe((result: any) => {
heroes = JSON.parse(result._body)
// heroes is now an array you started with
// heroes[0] == {"name":"aditya"}
// heroes[1] == {"name":"xyz"}
我的部分service.spec.ts如下:
service.spec.ts
it('should mock the http requests', inject([Service, MockBackend], (service, mockBackend) => {
let result:any;
mockBackend.connections.subscribe((connection) => {
connection.mockRespond(new Response(new ResponseOptions({
body: JSON.stringify(mockResponse),
})));
});
service.getGoogle().subscribe((heroes: any) => {
result = heroes;
console.log('1', result);
console.log('2', result[0]); //Logs shows this as undefined!!I need to print here "aditya"
});
}))
mockResponse的取值如下:
const mockResponse = [{"name":"aditya"},{"name":"xyz"}];
日志:
LOG: 'Inside service'
LOG: '1', Response{_body: '[{"name":"aditya"},{"name":"xyz"}]', status: null, ok: false, statusText: null, headers: null, type: null, url: null}
LOG: '2', undefined
Other method
√ should mock the http requests
注意:'[{"name":"aditya"},{"name":"xyz"}]'
这是一个字符串!因为我已经将它转换成 JSON.stringify(mockResponse)
,如果我不会使用它,那么它会显示为 Object: [....], Object: [....]
。
不确定你的问题是什么。代码似乎在做你所要求的。
这个:
JSON.stringify(mockResponse),
将数组转换为字符串。然后,您将该字符串设为具有键 body
的 object 的值。并归还它。
您的订阅方法正在接收整个 Response
object,尽管从变量名称来看,我们假设您期望的是 Heroes
object。 (如果您将类型设置为 any
以外的类型,Typescript 将捕获此类错误)
现在,当您记录 result
时,它会记录您刚刚收到的结果 object。其中包括 body 持有你的字符串化 object。
result[0]
为空,因为 result
不是数组。
我想你想要:
service.getGoogle().subscribe((result: any) => {
heroes = JSON.parse(result._body)
// heroes is now an array you started with
// heroes[0] == {"name":"aditya"}
// heroes[1] == {"name":"xyz"}