2013-03-19 2 views
1

나는 일부 fle을 읽고 배열에 배열로 분할 된 (\ n - 새로운 행으로) 문자열을 넣어야하는 프로젝트에서 일하고 있습니다. 즉, fs.readFileSync(filepath, 'utf8').split('\n'); 인 파일을 읽는 중 출력이 문자열이고 배열로 변환해야하지만, 방법을 모르기 때문에 문제가 있습니다.Node.js : 파일을 읽고 배열에 배열로 넣는 파일

[[164,17567,160,[]],[166,8675,103,[]], 
[[164,17567,160,[]],[166,8675,103,[]], 
[[164,17567,160,[]],[166,8675,103,[]], 
[[164,17567,160,[]],[166,8675,103,[]] 

내가 루프에 넣어려고했지만, 어떻게 든 배열로 문자열에서 변환 할 수 없습니다, 출력이 그렇게 될 : 입력 데이터의 몇 가지 예제가

"[[164,17567,160,[]],[166,8675,103,[]]", 
"[[164,17567,160,[]],[166,8675,103,[]]", 
"[[164,17567,160,[]],[166,8675,103,[]]", 
"[[164,17567,160,[]],[166,8675,103,[]]" 

답변

5

줄 바꿈없이 하나의 문자열로 다시 결합한 다음 JSON.parse를 사용하여 구문 분석 할 것을 제안합니다.

var lines = fs.readFileSync(filepath, 'utf8').split('\n'); 
var rawData = ''; 
for (var l in lines){ 
    var line = lines[l]; 
    rawdata += line; 
} 
var data = JSON.parse('[' + rawdata + ']'); 

그러나! 그것은 각 줄에 여분의 여는 대괄호가있는 것처럼 보입니다 (오타가 아닌 한). 이들은 구문 분석하기 전에 삭제해야하며, 소스 데이터에서 제어 할 수 있으면 삭제해야합니다.

또한 JSON을 유효하게하려면 "[]"로 전체를 래핑해야합니다. 위에 표시된.

+1

.var data = require (filepath);는 .json 파일의 경우와 동일한 트릭을 수행합니다. – generalhenry

+0

이미 구문 분석을 시도했지만이 함수는 배열에서 일부 객체를 삭제합니다. 마지막으로 구문 분석 된 배열은 쉼표로 구분 된 숫자 목록이됩니다. – user1257255

+0

귀하의 의견을 바탕으로 답변을 개선하려고 시도했습니다. –

관련 문제