nodejs 에서 fs 사용할때 질문입니다. 채택완료

Copy
const fs = require('fs');

 

function load(filename) {
    const data = fs.readFileSync(filename,'utf8');   
    const dataArray = data.trim().split('\n') // 줄바꿈 제거        
        .map(JSON.parse); // json 으로.. 여기에서 오류 발생...

    return dataArray
}

filename = '/abc.json ';
const jsonArray = load(filename);


console.log(jsonArray[0]['id']); // 당연히 안찍힘.. ^^;;;

 

//abc.json 파일은 \n 이 포함되어져 아래처럼 되어져 있을때를 가정 합니다. 

{"id":"aaaa","name":"mansu"}
{"id":"bbbb","name":"kingkong"}

 

위의 코드를 보면 .map(JSON.parse); 이부분에서 에러가 발생하는데..

이 부분을 주석처리하고 돌리면 에러는 없지만 json 이 아니기 때문에 

원하는 부분의 콘솔 출력은 되지 않습니다. ^^;;;

 

혹시 몰라서 JSON 설치도 해보았는데..그건 아닌듯 합니다.

이유를 모르겠습니다.

 

//.map(JSON.parse);

주석처리후 전체를 콘솔 찍어보면 

{"id":"aaaa","name":"mansu"}\r',

{"id":"bbbb","name":"kingkong"}

 

이처럼 찍힙니다. \r 이거 때문일까요?

혹시나 해서 split('\r') 해봤지만 그대로 있더라구요..

혹시 아시는분 계실까요?


 

답변 1개

채택된 답변
+20 포인트

다음 코드가 도움이 될지 모르겠습니다.

Copy
const fs = require('fs');
 
function load(filename) {
    const data = fs.readFileSync(filename,'utf8');   
    //const dataArray = data.trim().split('\n') // 줄바꿈 제거
    //    .map(JSON.parse); // json 으로.. 여기에서 오류 발생...
    const tempdata = data.trim().replace(/\r?\n/g, ','); // 줄바꿈 제거
    const dataArray = JSON.parse('[' + tempdata + ']');
    return dataArray
}
filename = 'abc.json';
const jsonArray = load(filename);

console.log(jsonArray[0]['id']); // 당연히 안찍힘.. ^^;;;
 
//abc.json 파일은 \n 이 포함되어져 아래처럼 되어져 있을때를 가정 합니다. 
//{"id":"aaaa","name":"mansu"}
//{"id":"bbbb","name":"kingkong"}
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

정말 감사합니다. 바로해보니..console.log(jsonArray[0]['id']); 딱 찍히네요..
큰 도움 되었습니다.
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고