Javascript 如何从node.js调用JSON中的数组字段
在node.js应用程序中,在server.js文件中,我尝试使用下面的代码从名为Deckofcardsapi的外部api将请求和值打印到控制台Javascript 如何从node.js调用JSON中的数组字段,javascript,json,node.js,request,Javascript,Json,Node.js,Request,在node.js应用程序中,在server.js文件中,我尝试使用下面的代码从名为Deckofcardsapi的外部api将请求和值打印到控制台 const request = require('request'); request('https://deckofcardsapi.com/api/deck/new/draw/?count=2', function (error, response, body) { const data = JSON.parse(body); console.l
const request = require('request');
request('https://deckofcardsapi.com/api/deck/new/draw/?count=2', function (error, response, body) {
const data = JSON.parse(body);
console.log('remaining :', data.remaining);
console.log('statusCode:', response && response.statusCode);
console.log('suit:', data.cards[suit]);
});
当我尝试data.cards[套装]时,会出现如下错误
console.log('suit:', data.cards[suit]);
ReferenceError: suit is not defined
at Request._callback (/Users/lokanathc/Projects/deckOfCards/server.js:48:37)
at Request.self.callback (/Users/lokanathc/Projects/deckOfCards/node_modules/request/request.js:185:22)
at emitTwo (events.js:126:13)
at Request.emit (events.js:214:7)
at Request.<anonymous> (/Users/lokanathc/Projects/deckOfCards/node_modules/request/request.js:1161:10)
at emitOne (events.js:116:13)
at Request.emit (events.js:211:7)
at IncomingMessage.<anonymous> (/Users/lokanathc/Projects/deckOfCards/node_modules/request/request.js:1083:12)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:111:20)`
我应该使用什么来获取西装的价值:“黑桃”
以下是API的响应
{
"success": true,
"cards": [
{
"image": "https://deckofcardsapi.com/static/img/KH.png",
"value": "KING",
"suit": "HEARTS",
"code": "KH"
},
{
"image": "https://deckofcardsapi.com/static/img/8C.png",
"value": "8",
"suit": "CLUBS",
"code": "8C"
}
],
"deck_id":"3p40paa87x90",
"remaining": 50
}
您应该使用筛选方法,例如: data.cards.filtercard=>card.suit==“黑桃”; 编辑: 如果要访问对象数组中套装的所有值: 让suites=data.cards.mapcard=>card.suit;//套房是['SPADES','HEARTS']
要访问卡数组中的suit值,我们需要先使用数组索引访问数组,然后访问数组中所需字段名的名称。 这对我有用
console.log('suit:', data.cards[0].suit);
所以对于下面的代码
const request = require('request');
request('https://deckofcardsapi.com/api/deck/new/draw/?count=1', function (error, response, body) {
const data = JSON.parse(body);
console.log('remaining :', data.remaining);
console.log('statusCode:', response && response.statusCode);
console.log('suit:', data.cards[0].suit);
});
输出为:
remaining : 51
statusCode: 200
suit: HEARTS
此输出用于count=1,如果使用count=>1,则需要使用for循环迭代数组 错误是正确的,套装没有定义,但是定义的是data.cards[suit]或data.cards.suit我试过了,我得到的输出是剩余的:50状态代码:200套装:未定义您正在寻找密钥。在你的例子中,你没有把钥匙放进去,你试过添加这些引号吗?@JanWillemHuising是的,我也试过。我还有别的办法吗。我应该创建一个数组,然后推送值,然后访问它吗?我建议您花一些时间学习JavaScript的对象语法,并了解它与JSON的区别。在这种情况下,我只需要值数组,其中suit='SPADES',但我需要suit的值,它可以是任何东西。是的,这更有效,你能给我解释一下map的用法吗?如果我必须同时使用'value'和'suit',比如'10'个'CLUBS'。在这种情况下,filter方法是最好的解决方案:data.cards.filtercard=>card.suit='CLUBS'&&card.value='10';。您应该阅读数组及其方法的文档
remaining : 51
statusCode: 200
suit: HEARTS