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"}