루프 데이터의 노드를 사용하여 JSON 파일을 작성하려고합니다.
let jsonFile = require('jsonfile');
for (i = 0; i < 11; i++) {
jsonFile.writeFile('loop.json', "id :" + i + " square :" + i * i);
}
loop.json의 outPut은 다음과 같습니다.
id :1 square : 1
그러나 다음과 같은 출력 파일을 원하고 해당 코드를 다시 실행하면 동일한 기존 JSON 파일의 요소로 새로운 출력을 추가해야합니다.
{
"table":[
{
"Id ":1,
"square ":1
},
{
"Id ":2,
"square ":3
},
{
"Id ":3,
"square ":9
},
{
"Id ":4,
"square ":16
},
{
"Id ":5,
"square ":25
},
{
"Id ":6,
"square ":36
},
{
"Id ":7,
"square ":49
},
{
"Id ":8,
"square ":64
},
{
"Id ":9,
"square ":81
},
{
"Id ":10,
"square ":100
}
]
}
첫 번째로 만든 동일한 파일을 사용하고 싶지만 해당 코드를 실행할 때마다 새 요소가 동일한 파일에 추가되어야합니다.
const fs = require('fs');
let obj = {
table: []
};
fs.exists('myjsonfile.json', function(exists) {
if (exists) {
console.log("yes file exists");
fs.readFile('myjsonfile.json', function readFileCallback(err, data) {
if (err) {
console.log(err);
} else {
obj = JSON.parse(data);
for (i = 0; i < 5; i++) {
obj.table.push({
id: i,
square: i * i
});
}
let json = JSON.stringify(obj);
fs.writeFile('myjsonfile.json', json);
}
});
} else {
console.log("file not exists");
for (i = 0; i < 5; i++) {
obj.table.push({
id: i,
square: i * i
});
}
let json = JSON.stringify(obj);
fs.writeFile('myjsonfile.json', json);
}
});
답변
이 json 파일이 시간이 지남에 따라 너무 커지지 않으면 다음을 시도해야합니다.
-
테이블 배열이 포함 된 자바 스크립트 객체를 만듭니다.
var obj = { table: [] };
-
그것에 같은 데이터를 추가하십시오
obj.table.push({id: 1, square:2});
-
stringify를 사용하여 객체에서 문자열로 변환
var json = JSON.stringify(obj);
-
fs를 사용하여 파일을 디스크에 기록
var fs = require('fs'); fs.writeFile('myjsonfile.json', json, 'utf8', callback);
-
추가하려면 json 파일을 읽고 객체로 다시 변환하십시오.
fs.readFile('myjsonfile.json', 'utf8', function readFileCallback(err, data){ if (err){ console.log(err); } else { obj = JSON.parse(data); //now it an object obj.table.push({id: 2, square:3}); //add some data json = JSON.stringify(obj); //convert it back to json fs.writeFile('myjsonfile.json', json, 'utf8', callback); // write it back }});
이것은 최대 100MB의 데이터에 효과적입니다. 이 한계를 초과하면 데이터베이스 엔진을 사용해야합니다.
최신 정보:
현재 날짜 (년 + 월 + 일)를 문자열로 반환하는 함수를 만듭니다. 이 문자열 + .json이라는 파일을 작성하십시오. fs 모듈에는 fs.stat (path, callback)라는 파일 존재를 확인할 수있는 기능이 있습니다. 이를 통해 파일이 존재하는지 확인할 수 있습니다. 존재하는 경우 읽기 기능이 없으면 작성 기능을 사용하십시오. 파일을 오늘 날짜 + .json으로 지정할 경로 cuz로 날짜 문자열을 사용하십시오. 콜백에는 stats 객체가 포함되며 파일이 없으면 null이됩니다.
답변
다음 프로그램을 시도하십시오. 이 출력이 필요할 수 있습니다.
var fs = require('fs');
var data = {}
data.table = []
for (i=0; i <26 ; i++){
var obj = {
id: i,
square: i * i
}
data.table.push(obj)
}
fs.writeFile ("input.json", JSON.stringify(data), function(err) {
if (err) throw err;
console.log('complete');
}
);
이 프로그램을 자바 스크립트 파일 (예 : square.js)로 저장하십시오.
그런 다음 명령을 사용하여 명령 프롬프트에서 프로그램을 실행하십시오. node square.js
그 기능은 명령을 실행할 때마다 기존 파일을 새로운 데이터 세트로 덮어 쓰는 것입니다.
행복한 코딩.
답변
json에 새 속성을 추가 할 때마다 파일을 읽고 새 속성을 추가하십시오
var fs = require('fs');
fs.readFile('data.json',function(err,content){
if(err) throw err;
var parseJson = JSON.parse(content);
for (i=0; i <11 ; i++){
parseJson.table.push({id:i, square:i*i})
}
fs.writeFile('data.json',JSON.stringify(parseJson),function(err){
if(err) throw err;
})
})
답변
위의 예도 정확하지만 간단한 예를 제공합니다.
var fs = require("fs");
var sampleObject = {
name: 'pankaj',
member: 'stack',
type: {
x: 11,
y: 22
}
};
fs.writeFile("./object.json", JSON.stringify(sampleObject, null, 4), (err) => {
if (err) {
console.error(err);
return;
};
console.log("File has been created");
});
답변
시험
var fs = require("fs");
var sampleObject = { your data };
fs.writeFile("./object.json", JSON.stringify(sampleObject, null, 4), (err) => {
if (err) { console.error(err); return; };
console.log("File has been created");
});
답변
형식화를 위해 jsonfile은 spaces
매개 변수로 전달할 수있는 옵션을 제공합니다 .
jsonfile.writeFile(file, obj, {spaces: 2}, function (err) {
console.error(err);
})
또는을 사용하십시오 jsonfile.spaces = 4
. 자세한 내용은 여기를 참조 하십시오 .
루프에서 매번 파일에 쓰는 것이 아니라 루프에서 JSON 객체를 구성하고 루프 외부의 파일에 쓰는 것이 좋습니다.
var jsonfile = require('jsonfile');
var obj={
'table':[]
};
for (i=0; i <11 ; i++){
obj.table.push({"id":i,"square":i*i});
}
jsonfile.writeFile('loop.json', obj, {spaces:2}, function(err){
console.log(err);
});
답변
동기식 접근
const fs = require('fs')
fs.writeFileSync('file.json', JSON.stringify(jsonVariable));
