Node.js를 사용하여 파일에 개체 쓰기
나는 이것을 위해 stackoverflow / google 전체를 검색했지만 알아낼 수 없습니다.
주어진 URL 페이지의 소셜 미디어 링크를 스크랩하고 있으며 함수는 URL 목록이있는 개체를 반환합니다.
이 데이터를 다른 파일에 쓰려고 [object Object]
하면 예상 한 대신 파일로 출력됩니다 . [ ' https://twitter.com/#!/101Cookbooks ', ' http://www.facebook.com/ 101cookbooks '] console.log()
결과 가 나올 때처럼 .
이것은 Node에서 파일을 읽고 쓰려는 슬픈 시도입니다. 각 줄 (URL)을 읽고 함수 호출을 통해 입력하려고합니다 request(line, gotHTML)
.
fs.readFileSync('./urls.txt').toString().split('\n').forEach(function (line){
console.log(line);
var obj = request(line, gotHTML);
console.log(obj);
fs.writeFileSync('./data.json', obj , 'utf-8');
});
참고로- gotHTML
기능 :
function gotHTML(err, resp, html){
var social_ids = [];
if(err){
return console.log(err);
} else if (resp.statusCode === 200){
var parsedHTML = $.load(html);
parsedHTML('a').map(function(i, link){
var href = $(link).attr('href');
for(var i=0; i<socialurls.length; i++){
if(socialurls[i].test(href) && social_ids.indexOf(href) < 0 ) {
social_ids.push(href);
};
};
})
};
return social_ids;
};
obj
귀하의 예에서 배열입니다.
fs.writeFileSync (filename, data, [options]) 에는 String
또는 Buffer
data 매개 변수 가 필요합니다 . 문서를 참조하십시오 .
배열을 문자열 형식으로 작성하십시오.
// writes 'https://twitter.com/#!/101Cookbooks', 'http://www.facebook.com/101cookbooks'
fs.writeFileSync('./data.json', obj.join(',') , 'utf-8');
또는:
// writes ['https://twitter.com/#!/101Cookbooks', 'http://www.facebook.com/101cookbooks']
var util = require('util');
fs.writeFileSync('./data.json', util.inspect(obj) , 'utf-8');
편집 : 예제에서 배열을 보는 이유는 노드의 구현이를 console.log
호출하는 것이 아니라 console.js 소스를toString
호출하기 때문입니다.util.format
deb2fast가 말한 것을 기반으로 JSON.stringify ()에 몇 가지 추가 매개 변수를 전달하여 예쁜 형식으로 만듭니다.
fs.writeFileSync('./data.json', JSON.stringify(obj, null, 2) , 'utf-8');
두 번째 매개 변수는이 경우 필요하지 않은 선택적 대체 함수이므로 null
작동합니다.
세 번째 매개 변수는 들여 쓰기에 사용할 공백 수입니다. 2와 4가 인기있는 선택 인 것 같습니다.
당신이 얻는 [object object]
다면 다음을 사용하십시오.JSON.stringify
fs.writeFile('./data.json', JSON.stringify(obj) , 'utf-8');
그것은 나를 위해 일했습니다.
In my experience JSON.stringify is slightly faster than util.inspect. I had to save the result object of a DB2 query as a json file, The query returned an object of 92k rows, the conversion took very long to complete with util.inspect, so I did the following test by writing the same 1000 record object to a file with both methods.
JSON.Stringify
fs.writeFile('./data.json', JSON.stringify(obj, null, 2));
Time: 3:57 (3 min 57 sec)
Result's format:
[
{
"PROB": "00001",
"BO": "AXZ",
"CNTRY": "649"
},
...
]
util.inspect
var util = require('util'); fs.writeFile('./data.json', util.inspect(obj, false, 2, false));
Time: 4:12 (4 min 12 sec)
Result's format:
[ { PROB: '00001',
BO: 'AXZ',
CNTRY: '649' },
...
]
could you try doing JSON.stringify(obj);
Like this
var stringify = JSON.stringify(obj);
fs.writeFileSync('./data.json', stringify , 'utf-8');
Just incase anyone else stumbles across this, I use the fs-extra library in node and write javascript objects to a file like this:
const fse = require('fs-extra');
fse.outputJsonSync('path/to/output/file.json', objectToWriteToFile);
참고URL : https://stackoverflow.com/questions/21976567/write-objects-into-file-with-node-js
'programing tip' 카테고리의 다른 글
Rails 4에서 글꼴을 사용하는 방법 (0) | 2020.11.23 |
---|---|
RoR 중첩 속성은 편집시 중복을 생성합니다. (0) | 2020.11.23 |
Python 3.1.1 문자열을 16 진수로 (0) | 2020.11.23 |
사전에 ASP.NET MVC 바인딩 (0) | 2020.11.23 |
iTerm2 또는 OSX Lion의 터미널에서 단어 점프 (0) | 2020.11.23 |