Javascript JSON数组的值在转换为字符串后显示Undefined
我的service.spec.ts的部分内容如下: 服务规范tsJavascript 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
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"}