নোড.জেএস ব্যবহার করে জেএসএন ফাইলে ডেটা লিখুন / যুক্ত করুন


197

লুপ ডেটা থেকে নোড ব্যবহার করে আমি JSON ফাইলটি লেখার চেষ্টা করছি, যেমন:

let jsonFile = require('jsonfile');

for (i = 0; i < 11; i++) {
    jsonFile.writeFile('loop.json', "id :" + i + " square :" + i * i);
}

লুপ.জসন-এ আউটপুট হ'ল:

id :1 square : 1

তবে আমি এই জাতীয় (নীচে) আউটপুট ফাইল চাই এবং এছাড়াও যদি আমি সেই কোডটি আবার চালিত করি তবে এটি সেই নতুন আউটপুটটিকে একই বিদ্যমান জেএসএন ফাইলের উপাদান হিসাবে যুক্ত করা উচিত:

{
   "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);
    }
});

উত্তর:


386

আপনার চেষ্টা করা উচিত সময়ের সাথে যদি এই জসন ফাইলটি খুব বেশি বড় না হয়:

  1. এতে টেবিল অ্যারে সহ একটি জাভাস্ক্রিপ্ট অবজেক্ট তৈরি করুন

    var obj = {
       table: []
    };
  2. এটির মতো কিছু ডেটা যুক্ত করুন

    obj.table.push({id: 1, square:2});
  3. এটিকে স্ট্রিংফাইয়ের সাথে কোনও বস্তু থেকে স্ট্রিংয়ে রূপান্তর করুন

    var json = JSON.stringify(obj);
  4. ডিস্কে ফাইল লিখতে fs ব্যবহার করুন

    var fs = require('fs');
    fs.writeFile('myjsonfile.json', json, 'utf8', callback);
  5. আপনি যদি এটি যুক্ত করতে চান তবে জেসন ফাইলটি পড়ুন এবং এটিকে আবার কোনও বস্তুতে রূপান্তর করুন

    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 
    }});

এটি কার্যকরভাবে কার্যকরভাবে 100 এমবি সর্বোচ্চ ডেটার জন্য কাজ করবে। এই সীমা ছাড়িয়ে গেলে, আপনার একটি ডাটাবেস ইঞ্জিন ব্যবহার করা উচিত।

হালনাগাদ:

একটি ফাংশন তৈরি করুন যা বর্তমান তারিখটিকে (বছর + মাস + দিন) স্ট্রিং হিসাবে ফিরিয়ে দেয়। এই স্ট্রিং + .json নামক ফাইল তৈরি করুন। fs মডিউলের একটি ফাংশন রয়েছে যা fs.stat (পাথ, কলব্যাক) নামের ফাইল অস্তিত্বের জন্য পরীক্ষা করতে পারে। এটির সাহায্যে আপনি ফাইলটি বিদ্যমান কিনা তা পরীক্ষা করতে পারেন। এটি উপস্থিত থাকলে, পঠন ফাংশনটি এটি না থাকলে ব্যবহার করুন, তৈরি ফাংশনটি ব্যবহার করুন। তারিখ স্ট্রিংটি পাথ কুজের হিসাবে ফাইলটিকে আজকের তারিখ + .জসন হিসাবে নামকরণ করা হবে। কলব্যাকটিতে একটি স্ট্যাটাস অবজেক্ট থাকবে যা ফাইলটি উপস্থিত না থাকলে নਾਲ হবে।


1
উত্তরের জন্য ধন্যবাদ আমি এটির কাজ করার চেষ্টা করেছি তবে কীভাবে পুরাতন ফাইল উপস্থিত রয়েছে তা যাচাই করতে হবে তবে অন্য পাঠ্য ফাইলটি চালান অন্যথায় লেখার ফাইলটি চালান আমি ফাইলের নামে বর্তমান তারিখের সাথে প্রতিদিন নতুন নতুন ফাইল তৈরি করছি এবং আমি চাইছি যে পুরানো ফাইলটিতে পুরো দিন নতুন ডেটা যুক্ত করা হোক যখন এই কোডটি চলবে
আইসফটমাস্টার

1
আপনাকে আবারও ধন্যবাদ আমি আমার কোডটি তৈরি করে দিয়েছি: ডি আপনার সমস্ত সহায়তায় কিন্তু আমি fs.exists ব্যবহার করেছি আমার প্রশ্নের উত্তর দিয়ে আপডেট করেছে
ইসফটমাস্টার

অথবা আপনি jsonfile নোড প্যাকেজটিও ব্যবহার করতে পারেন যা উপরের কোডগুলিতে প্রদর্শিত না সমস্ত জটিলতাগুলিকে আবৃত করে
জ্যাচ

JSON অবজেক্টের "টেবিল" বা বৈশিষ্ট্যগুলি আগে থেকে জানা না থাকলে কী হবে ???
oldboy

@ কাইলনিরিস স্যার আমি কীভাবে কৌনিক জেএস-তে আমার স্থানীয় জসন ফাইলটিতে একটি নির্দিষ্ট নোড আপডেট করতে পারি আমার একটি কনফিগারেশন.জসন ফাইল আছে আমি এটির একটি নির্দিষ্ট নোড আপডেট করতে চেয়েছিলাম তবে আমি কীভাবে এটি করতে পারি।
দ্য বার্নিং ফায়ার

23

নিম্নলিখিত প্রোগ্রাম চেষ্টা করুন। আপনি এই আউটপুট আশা করতে পারেন।

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');
    }
);

এই প্রোগ্রামটি একটি জাভাস্ক্রিপ্ট ফাইলে সংরক্ষণ করুন, বলুন, ਵਰਗ.জেএস।

কমান্ড প্রম্পট থেকে কমান্ডটি ব্যবহার করে প্রোগ্রামটি চালান node square.js

এটি যা করে তা হ'ল প্রতিটি ফাইলকে নতুন সেট করে ডেটা সেট করে, যখনই আপনি কমান্ডটি প্রয়োগ করেন।

শুভ কোডিং।


11

আপনার ফাইলটি পড়া উচিত, প্রতিবার আপনি জসসনে একটি নতুন সম্পত্তি যুক্ত করতে চান এবং তারপরে নতুন বৈশিষ্ট্য যুক্ত করতে হবে

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;
  })
})

1
উত্তরের জন্য ধন্যবাদ আমি এটির কাজ করার চেষ্টা করেছি তবে কীভাবে পুরাতন ফাইল উপস্থিত রয়েছে তা যাচাই করতে হবে তবে পুনরায় ফাইলফিল কোড চালান অন্যথায় রাইফিল ফাইল চালান নতুন ফাইল তৈরি করার জন্য আমি ফাইলের নামে বর্তমান তারিখের সাথে প্রতিদিন নতুন নতুন ফাইল তৈরি করছি এবং আমি এতে নতুন ডেটা যুক্ত করতে চাই পুরানো ফাইল সারা দিন যখন এই কোডটি চালিত হয়
আইসফটমাস্টার

10

উপরের উদাহরণটিও সঠিক, তবে আমি সাধারণ উদাহরণ সরবরাহ করি:

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");
});

8

চেষ্টা

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");
});

7

ফর্ম্যাট করার জন্য jsonfile spacesঅপশন দেয় যা আপনি প্যারামিটার হিসাবে পাস করতে পারেন:

   jsonfile.writeFile(file, obj, {spaces: 2}, function (err) {
         console.error(err);
   })

বা ব্যবহার jsonfile.spaces = 4এখানে বিশদ পড়ুন ।

আমি প্রতিবার লুপে ফাইল করার জন্য লেখার পরামর্শ দেব না, পরিবর্তে লুপে জেএসওএন অবজেক্টটি তৈরি করুন এবং লুপের বাইরে ফাইল লিখতে লিখুন।

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);
});

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.