테스트 사이트 - 개발 중인 베타 버전입니다

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

그렌트힐 1년 전 조회 1,169

</p>

<p>const fs = require('fs');</p>

<p> </p>

<p>function load(filename) {

    const data = fs.readFileSync(filename,'utf8');   

    const dataArray = data.trim().split('\n') // 줄바꿈 제거        

        .map(JSON.parse); // json 으로.. 여기에서 오류 발생...</p>

<p>    return dataArray

}</p>

<p>filename = '/abc.<code>json </code>';

const jsonArray = load(filename);</p>

<p>

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

<p> </p>

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

<p><code>{"id":"aaaa","name":"mansu"}

{"id":"bbbb","name":"kingkong"}</code></p>

<p>

 

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

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

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

 

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

이유를 모르겠습니다.

 

//.map(JSON.parse);

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

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

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

 

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

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

혹시 아시는분 계실까요?


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

답변 1개

채택된 답변
+20 포인트
1년 전

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

</p>

<p>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);</p>

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

 

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

//{"id":"aaaa","name":"mansu"}

//{"id":"bbbb","name":"kingkong"}</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

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

로그인