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 如何从node.js调用JSON中的数组字段_Javascript_Json_Node.js_Request - Fatal编程技术网

Javascript 如何从node.js调用JSON中的数组字段

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

在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.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