2014-04-27 2 views
1

node.js의 API에서 점수를 얻으려고하고 있으며 함수처럼 보이는 응답이 표시됩니다. 이 함수에서 JSON 데이터를 가져 오는 방법을 정확히 모르겠습니다. "게임"내API가 함수를 반환합니다.

var req = http.request(options, function(res){ 
    res.setEncoding('utf8'); 
    res.on('data', function(data){ 
     console.log(data); 
    }); 
}); 

응답은 ...

shsMSNBCTicker.loadGamesData({ 
"sport": "NBA", 
"period": "20140426", 
"games": [""] 
}); 

데이터의 무리입니다 그러나 그것은 중요하지 않습니다 그리고 너무 많은 공간을 차지한다. 이 예에서는 "스포츠"를 얻으려고한다고 가정 해 봅시다. "NBA"를 반환 할 것입니다.

+0

JSONP 응답이라고 생각합니다. – Kai

답변

2

응답 내용은 JSONP입니다. 일반적으로 API는 JSON과 JSONP를 매개 변수로 구성 할 수 있습니다. 그러나 여기에서 요청한 이후로 요청에 대한 제어권이 없다고 가정합니다 (API 작성자에게 예의적인 메시지가 도움이 될 수 있음).

응답에 사용 된 네임 스페이스를 제공하고 응답을 평가할 수 있습니다. 그러나 이것이 Node이고 브라우저가 아니기 때문에 아이디어는 어리석은 바보입니다. 대신 수동으로 JSON으로 응답을 조작하는 것이 좋습니다.

JSON.parse(response.replace(/^[^\(]*\(/, '').replace(/\);$/, '')); 
+0

"JSONP"를 제거하고 요청에 대한 URL에서 "JSON"을 사용할 수있었습니다. 그것은 제가 찾고 있던 JSON을주었습니다. 또한 게임 배열 내에서 API의 응답은 XML입니다. 머리 꼭대기에서 XML 태그 배열에서 데이터를 추출하는 데 유용한 자습서를 알고 계십니까? –

+1

@CollinMcGuire NPM에는 아마 많은 XML 파서가 있습니다. Google이이를 발견했습니다 : https://github.com/Leonidas-from-XIV/node-xml2js – Sukima

관련 문제