nodejs 에서 fs 사용할때 질문입니다.
본문
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
다음 코드가 도움이 될지 모르겠습니다.
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"}
답변을 작성하시기 전에 로그인 해주세요.