Fs.writeFileSync সহ একটি JSON ফাইলে JSON আপত্তি লেখার জন্য


116

আমি একটি JSON ফাইলে একটি JSON অবজেক্ট লেখার চেষ্টা করছি। কোডটি ত্রুটি ছাড়াই কার্যকর করে, তবে বস্তুর লিখিত সামগ্রীর পরিবর্তে JSON ফাইলে যা লেখা থাকে তা হ'ল:

[object Object]

এই কোডটি আসলে লিখিতটি করে:

fs.writeFileSync('../data/phraseFreqs.json', output)

'আউটপুট' একটি JSON অবজেক্ট এবং ফাইলটি ইতিমধ্যে বিদ্যমান। আরও তথ্যের প্রয়োজন হলে দয়া করে আমাকে জানান।


11
fs.writeFileSync ('../ ডেটা / বাক্যাংশফ্রেইকস.জসন', জেএসওএন.স্ট্রিংফাই (আউটপুট))
ড্যানিয়েল

উত্তর:


169

আপনাকে অবজেক্টটি স্ট্রিংফাই করতে হবে।

fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output));

2
কোনও প্রশ্নের উত্তর দেওয়ার আগে এসও-তে স্বাগতম, বিদ্যমান উত্তরটি পর্যালোচনা করার চেষ্টা করুন। যদি আপনার উত্তরটি ইতিমধ্যে প্রস্তাবিত হয়েছে তবে পরিবর্তে সেই উত্তরটি আপগ্রেট করুন। একটি ভাল উত্তর লেখার জন্য সম্প্রদায় গাইড দেখুন ।
লাইটবেন্ডার

44
আমি পছন্দ করি যে এটি সিঙ্ক্রোনাস বনাম অ্যাসিঙ্ক অপারেশনগুলি ব্যবহার করবেন কিনা সে সম্পর্কে কোনও মতামত ছাড়াই এই প্রশ্নের উত্তর দেয়।
ব্রায়ান ডানকান

1
পঠনযোগ্যতার উদ্দেশ্যে আপনি JSON.stringify পদ্ধতির স্পেস প্যারামিটারটি ব্যবহার করতে পারেন: fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output, null, 2));আরও: বিকাশকারী.মোজিলা.আর.ইন-
বিহ

48

আমি মনে করি না আপনি সিঙ্ক্রোনাস পদ্ধতির ব্যবহার করা উচিত, অ্যাসিঙ্ক্রোনালি কোনও ফাইলের ডেটা লেখার ক্ষেত্রে outputযদি এটির হয় তবে আরও স্ট্রিংফাই করা উচিত object

দ্রষ্টব্য: যদি outputএকটি স্ট্রিং হয়, তবে এনকোডিং নির্দিষ্ট flagকরুন এবং পাশাপাশি বিকল্পগুলি মনে রাখবেন . :

const fs = require('fs');
const content = JSON.stringify(output);

fs.writeFile('/tmp/phraseFreqs.json', content, 'utf8', function (err) {
    if (err) {
        return console.log(err);
    }

    console.log("The file was saved!");
}); 

কোনও ফাইলে ডেটা লেখার সিঙ্ক্রোনাস পদ্ধতি যুক্ত করা হয়েছে তবে দয়া করে আপনার ব্যবহারের ক্ষেত্রে বিবেচনা করুন। অ্যাসিঙ্ক্রোনাস বনাম সিঙ্ক্রোনাস এক্সিকিউশন, এর আসলে কী অর্থ?

const fs = require('fs');
const content = JSON.stringify(output);

fs.writeFileSync('/tmp/phraseFreqs.json', content);

9
যদি এটি একটি শর্ট স্ক্রিপ্ট বা অন্য কিছুতে করা হচ্ছে, সিঙ্ক্রোনাস ঠিক আছে। যদি এটি কোনও সার্ভারের অনুরোধ বা কোনও কিছুর অংশ হয়, তবে এটি অ্যাসিঙ্ক্রোনাস হওয়া উচিত।
হিলটন শামওয়ে

1
অগত্যা, I / O বাউন্ড প্রক্রিয়াগুলি অবিচ্ছিন্ন করা উচিত, তবে সংক্ষিপ্ত স্ক্রিপ্ট জটিলতার উপর নির্ভর করে আপনি সিঙ্ক্রোনাসের জন্য বেছে নিতে পারেন।
অ্যাকিনজিড

4
এটি প্রশ্নের উত্তর নয়।
স্টিফান বিজজিটার 12

6
ব্যবহারকারী বিশেষত সিঙ্ক্রোনাস পদ্ধতিটি জিজ্ঞাসা করেছিলেন
অ্যান্থনি

7
অ্যাসিঙ্ক ভাল বলা বন্ধ করুন। এবং বোঝানো সিঙ্কটি খারাপ। আপনি যদি গতি সম্পর্কে চিন্তিত হন তবে আপনার ওয়েবপ্যাকটি আপনার জন্য সেই অপটিমাইজেশনটি করা উচিত। আপনি অপটিমাইজার নন। কারণ: json কমান্ড-লাইন সরঞ্জামগুলির জন্য সিঙ্ক ফাইল রাইটিং দরকার। শৃঙ্খলে পরবর্তী অ্যাপ্লিকেশনে ডেটা পাইপ করার আগে যা তাদের অবশ্যই খোলা ফাইলগুলি বন্ধ করতে হবে।
তমুসজেরোয়েস

27

তৃতীয় আর্গুমেন্টটি এখানে পাঠিয়ে জেসনকে মানব পাঠযোগ্য করুন stringify:

fs.writeFileSync('../data/phraseFreqs.json', JSON.stringify(output, null, 4));

1

কোনও ওয়েব সার্ভারে ডেটা প্রেরণ করার সময়, ডেটা একটি স্ট্রিং ( এখানে ) হতে হবে। আপনি একটি জাভাস্ক্রিপ্ট অবজেক্টটি স্ট্রিংয়ে স্ট্রিংয়ে রূপান্তর করতে পারেন JSON.stringify()এখানে একটি কার্যকারী উদাহরণ:

var fs = require('fs');

var originalNote = {
  title: 'Meeting',
  description: 'Meeting John Doe at 10:30 am'
};

var originalNoteString = JSON.stringify(originalNote);

fs.writeFileSync('notes.json', originalNoteString);

var noteString = fs.readFileSync('notes.json');

var note = JSON.parse(noteString);

console.log(`TITLE: ${note.title} DESCRIPTION: ${note.description}`);

আশা করি এটি সাহায্য করতে পারে।


1

fsপ্রতিশ্রুতি ব্যবহার করে এর সংস্করণ ব্যবহার করে এখানে একটি ভিন্নতা রয়েছে :

const fs = require('fs');

await fs.promises.writeFile('../data/phraseFreqs.json', JSON.stringify(output)); // UTF-8 is default
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.