Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON数组的值在转换为字符串后显示Undefined_Javascript_Json_Angular_Karma Jasmine_Angular2 Testing - Fatal编程技术网

Javascript JSON数组的值在转换为字符串后显示Undefined

Javascript JSON数组的值在转换为字符串后显示Undefined,javascript,json,angular,karma-jasmine,angular2-testing,Javascript,Json,Angular,Karma Jasmine,Angular2 Testing,我的service.spec.ts的部分内容如下: 服务规范ts it('should mock the http requests', inject([Service, MockBackend], (service, mockBackend) => { let result:any; mockBackend.connections.subscribe((connection) => { connection.mockRespond(new Respo

我的service.spec.ts的部分内容如下:

服务规范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”}]

日志:


注意:
'[{“name”:“aditya”},{“name”:“xyz”}]
这是一个字符串!由于我已将其转换为
JSON.stringify(mockResponse)
,如果我没有使用它,那么它将显示为
对象:[……],对象:[……]

不确定您的问题是什么。代码似乎正在按您的要求执行

这:

将数组转换为字符串。然后,使用键
body
将该字符串设置为对象的值。然后把它还给我

您的subscribe方法正在接收整个
响应
对象,尽管从变量名来看,我们假定您期望的是
英雄
对象。(如果将类型设置为除
any
以外的其他类型,则Typescript将捕获此类错误)

现在,当您记录
result
时,它会记录您刚刚收到的结果对象。其中包括持有你的弦化物体的身体

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

不知道你的问题是什么。代码似乎正在按您的要求执行

这:

将数组转换为字符串。然后,使用键
body
将该字符串设置为对象的值。然后把它还给我

您的subscribe方法正在接收整个
响应
对象,尽管从变量名来看,我们假定您期望的是
英雄
对象。(如果将类型设置为除
any
以外的其他类型,则Typescript将捕获此类错误)

现在,当您记录
result
时,它会记录您刚刚收到的结果对象。其中包括持有你的弦化物体的身体

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

我在这里遵循这一点,它使用的是
body
,但在响应中,它的
\u body
。它会影响吗?根据(1)
结果
不是一个数组,而是一个响应对象,它有一个
\u body
-属性,它有一个JSON字符串。所以(2)应该是:
JSON.parseJSON(result.\u body)[0]
我在这里使用的是
body
,但是在响应中它的
\u body
。它会影响吗?根据(1)
result
不是一个数组,而是一个响应对象,它有一个
\u body
-属性,它有一个JSON字符串。所以(2)应该是:
JSON.parseJSON(result.\u body)[0]
实际上,我在这里传递硬编码响应,这是JSON。所以我创建了一个JSON数组。创建后,我将其作为响应传递给我的模拟请求。然后希望在控制台中显示此响应并测试它。您正在控制台中显示您的响应:
response{{u body:'[{“name”:“aditya”},{“name”:“xyz”}]“,status:null,ok:false,statusText:null,headers:null,type:null,url:null}
我想显示“name”:“aditya”作为数组的第一个元素,我该怎么做?你是否尝试过用
JSON.parse(result.\u body)
解析JSON?是的,它实际上显示了
[对象{name:'aditya'},对象{name:'xyz,我在这里传递硬编码的响应,它是JSON。因此我创建了一个JSON数组。在创建它之后,我将它作为响应传递给我的模拟请求。然后希望在控制台中显示此响应并测试它。您在控制台中显示您的响应:
response{{u body:'[{“name”:“aditya”},{“name”:“xyz}]“,status:null,ok:false,statusText:null,headers:null,type:null,url:null}
我想显示“name”:“aditya”作为数组的第一个元素,我该怎么做?你是否尝试过用
JSON.parse(result.\u body)
解析JSON?是的,它显示
[对象{name:'aditya'},对象{name:'xyz]
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"}