Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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 从nodejs的https请求访问json响应数据的问题_Javascript_Node.js_Json - Fatal编程技术网

Javascript 从nodejs的https请求访问json响应数据的问题

Javascript 从nodejs的https请求访问json响应数据的问题,javascript,node.js,json,Javascript,Node.js,Json,我使用NodeJS的本地HTTPS模块编写了一个HTTPS函数,以从API获取一些JSON 当我执行GET请求时,我得到的是JSON,但当我必须发出PUT请求时,我得到的是JSON,但我无法将其转换为对象 GET的答复: { items: [ { dsname: 'A09999' }, { dsname: 'A09999.ALLFILES.TEMP' }, ], returnedRows: 16, JSONversion: 1 } 主席的答覆: { 'cmd

我使用NodeJS的本地HTTPS模块编写了一个HTTPS函数,以从API获取一些JSON

当我执行GET请求时,我得到的是JSON,但当我必须发出PUT请求时,我得到的是JSON,但我无法将其转换为对象

GET的答复:

{
  items: [
    { dsname: 'A09999' },
    { dsname: 'A09999.ALLFILES.TEMP' },
  ],
  returnedRows: 16,
  JSONversion: 1
}
主席的答覆:

{
  'cmd-response-key': 'C8124546',
  'cmd-response-url':'https://myhost/zosmf/restconsoles/consoles/ibmusecn/solmsgs/C8124546',
  'cmd-response-uri': '/zosmf/restconsoles/consoles/ibmusecn/solmsgs/C8124546',
  'cmd-response':
   ' IEE457I 16.32.55 UNIT STATUS 464\r UNIT TYPE STATUS        VOLSER' }
我的代码:

const makeRequest = options =>
    new Promise(function(resolve, reject) {
        let results = https.request(options, res => {
            res.setEncoding('utf8');
            let body = '';

            res.on('data', data => {
                body += data;
            });
            res.on('end', () => {
                body = JSON.parse(body);
                console.log('body :', body);
                resolve(body);
            });
        });
        if (options.body) {
            // results.write(options.body);
            results.write(JSON.stringify(options.body),['Transfer-Encoding', 'chunked']);
        }
        results.on('error', e => {
            reject(e);
        });
        results.end();
    });

那么,您从文章中得到的不是一个有效的json对象。就在这里:

'cmd-response':
   ' IEE457I 16.32.55 UNIT STATUS 464\r UNIT TYPE STATUS        VOLSER'' }
请注意,在结尾处,VOLSER后面跟着to“”。这将结束以值开头的字符串,并打开一个新字符串。这是无效的JSON


此外,我建议使用axios之类的库或npm的请求。写得好,使用广泛,没有直接使用https模块那么低级。

第二个“是错误粘贴的,我没有得到答案,无论如何,它没有像预期的那样出现:(顺便说一句,我刚刚试过AXIOS,我得到了相同格式的答案……我会向负责维护该api的人报告,因为我可以认为这可能是api方面的一个问题,没有正确处理答案,这两个都不是有效的JSON。但也许你正在展示已经解析的JSON?我说不出来。