다른 답변의 문제 :
- 위험한
JSON.parse
- 응답 코드 검사 없음
여기에있는 모든 답변 JSON.parse()
은 안전하지 않은 방식으로 사용 됩니다 . 당신은 항상 모든 통화를 두어야 JSON.parse()
A의 try/catch
블록 특히 당신이 여기처럼 JSON은 외부 소스에서 나오는 구문 분석 할 때.
request
다른 답변에서 여기에 언급되지 않은 JSON을 자동으로 구문 분석하는 데 사용할 수 있습니다 . request
모듈을 사용하는 답변이 이미 있지만 JSON.parse()
JSON을 수동으로 구문 분석 하는 데 사용 합니다. 이는 항상try {} catch {}
잘못된 JSON의 오류를 처리하기 위해 블록 내에서 실행 되어야합니다. 그렇지 않으면 전체 앱이 충돌합니다. 그리고 잘못된 JSON이 발생합니다. 저를 믿으십시오.
사용하는 다른 답변 은 발생할 수있는 예외를 확인하지 않고 응용 프로그램을 충돌시키는 http
것도 사용 JSON.parse()
합니다.
아래에서는 안전하게 처리하는 몇 가지 방법을 보여 드리겠습니다.
모든 예제는 공용 GitHub API를 사용하므로 누구나 안전하게 해당 코드를 시도 할 수 있습니다.
예제 request
다음은 request
JSON을 자동으로 구문 분석 하는 작업 예제입니다 .
'use strict';
var request = require('request');
var url = 'https://api.github.com/users/rsp';
request.get({
url: url,
json: true,
headers: {'User-Agent': 'request'}
}, (err, res, data) => {
if (err) {
console.log('Error:', err);
} else if (res.statusCode !== 200) {
console.log('Status:', res.statusCode);
} else {
console.log(data.html_url);
}
});
http
및 예제try/catch
이 용도는 https
- 단지 변경 https
에 http
당신이 HTTP 연결을 원하는 경우 :
'use strict';
var https = require('https');
var options = {
host: 'api.github.com',
path: '/users/rsp',
headers: {'User-Agent': 'request'}
};
https.get(options, function (res) {
var json = '';
res.on('data', function (chunk) {
json += chunk;
});
res.on('end', function () {
if (res.statusCode === 200) {
try {
var data = JSON.parse(json);
console.log(data.html_url);
} catch (e) {
console.log('Error parsing JSON!');
}
} else {
console.log('Status:', res.statusCode);
}
});
}).on('error', function (err) {
console.log('Error:', err);
});
http
및 예제tryjson
이 예제는 위와 비슷하지만 tryjson
모듈을 사용합니다 . (면책 조항 : 저는 해당 모듈의 작성자입니다.)
'use strict';
var https = require('https');
var tryjson = require('tryjson');
var options = {
host: 'api.github.com',
path: '/users/rsp',
headers: {'User-Agent': 'request'}
};
https.get(options, function (res) {
var json = '';
res.on('data', function (chunk) {
json += chunk;
});
res.on('end', function () {
if (res.statusCode === 200) {
var data = tryjson.parse(json);
console.log(data ? data.html_url : 'Error parsing JSON!');
} else {
console.log('Status:', res.statusCode);
}
});
}).on('error', function (err) {
console.log('Error:', err);
});
요약
사용하는 예가 request
가장 간단합니다. 그러나 어떤 이유로 사용하고 싶지 않다면 항상 응답 코드를 확인하고 JSON을 안전하게 구문 분석해야합니다.