node.js তে জসনের দরকার আছে কি?


247

আমি আমার জাভাস্ক্রিপ্ট কোডে বেশ কয়েকটি জেএসএন ফাইল অন্তর্ভুক্ত করতে চাই যা আমার জাভাস্ক্রিপ্ট উত্স ফাইল হিসাবে একই ডিরেক্টরিতে রয়েছে।

আমি যদি অন্য কোনও জাভাস্ক্রিপ্ট ফাইল অন্তর্ভুক্ত করতে চাইতাম তবে আমি কেবল ব্যবহার করতে পারি require। এখন আমি ব্যবহার করছি readFileSyncএবং __dirnameজেএসএন পেতে, যা আমি মনে করি এটি করার একটি কুশ্রী উপায়।

এর জন্য কি অনুরূপ কিছু রয়েছে যা আমাকে একটি JSON ফাইল লোড করতে সক্ষম করে?


: এই অনুরূপ প্রশ্ন দেখতে পাবেন stackoverflow.com/questions/4662851/...
holygeek

@ কোয়েন "জেএসএন ফাইল অন্তর্ভুক্ত করুন" বলতে কী বোঝ? পড়ুন এবং পার্স করবেন? যদি হ্যাঁ, সম্ভাব্য সদৃশ: stackoverflow.com/questions/5726729/...
সিরো Santilli郝海东冠状病六四事件法轮功

2
হ্যাঁ; পড়ুন এবং বিশ্লেষণ করুন। তবে এটি বিশেষত কোনও ফাইল পড়ছে, জেএস ফাইল পড়ার অনুরূপ, সুতরাং এটি কোনও সদৃশ নয় এবং ছাগলচালকের উত্তরটি এখনও বৈধ।
কোএন

উত্তর:


455

নোড v0.5.x হিসাবে হ্যাঁ আপনার জেএসওএন যেমন আপনার একটি জেএস ফাইলের প্রয়োজন হবে তেমন প্রয়োজন।

var someObject = require('./somefile.json')

ES6 এ:

import someObject from ('./somefile.json')


1
এটা কি সত্য? এটি আমার পক্ষে কাজ করছে না, এবং গিথুবজয়জয়েন্ট / ননড / হাইসস / ১35৩7 এবং গিথুবজয়জয়েন্ট / ননড / পুল / 84৪৮ পরামর্শ দিচ্ছে যে এটি করা উচিত নয়।
ব্যবহারকারী 161642

12
ফাইলটি একই ডিরেক্টরিতে রয়েছে তা ধরে নিয়ে আপনার প্রয়োজন ('./ somefile.json') ব্যবহার করতে হবে (ডট এবং স্ল্যাশ নোট করুন)।
স্টিভ উইলকক

66
এই সঙ্গে একটি গ্যাচা আছে। ফলাফল ক্যাশে হবে! সুতরাং যদি আপনাকে কোনও কারণে ডেটা আবার লোড করতে হয় (ক্রোনজব এ বলুন), আপনি একই পুরানো ফলাফল পাবেন।
জুহো ভেস্পসালিনেন

41
দ্রষ্টব্য: এক্সটেনশনটি গুরুত্বপূর্ণ .jsonমনে হচ্ছে
এনহা

9
সুগঠিত
জসন

40

জেএসএন ফাইলগুলির স্পষ্ট রফতানির বিবৃতি প্রয়োজন হয় না। এটি জাভাস্ক্রিপ্ট ফাইল হিসাবে ব্যবহার করতে আপনাকে রফতানি করতে হবে না।

সুতরাং, আপনি কেবল requireবৈধ JSON নথির জন্য ব্যবহার করতে পারেন ।

data.json

{
  "name": "Freddie Mercury"
}

main.js

var obj = require('data.json');

console.log(obj.name); 
//Freddie Mercury

20

না হয় ব্যবহার করুন readFileবা readFileSync(কেবলমাত্র প্রারম্ভিকালীন সময়ে)।

অথবা একটি বিদ্যমান লাইব্রেরি ব্যবহার করুন

বিকল্পভাবে আপনার কনফিগারেশনটি একটি জেএস ফাইলে লিখুন তারপরে একটি জসন ফাইলের মতো

module.exports = {
  // json
}

1
@ হ্যাঁ, আমরা সর্বদা __dirnameআপেক্ষিক পথ তৈরিতে ব্যবহার করি ।
রায়নস

এটি এখান থেকে চলে আসে যেখানে এটি স্থানীয়ভাবে JSON আমদানি করে তবে আমার EC2 এ ডাব্লার ধারকটি এডাব্লুএসে নয় ... মাইম প্রকারগুলি কনফিগার করার চেষ্টা করার পরিবর্তে এবং কী নয়, আমি কেবল JSON এর পরিবর্তে জেএসে স্যুইচ করেছি। আশা করি এটি কারও সাহায্য করবে।
এরিক গ্রসকুর্থ

17

সবচেয়ে সাধারণ দুটি

প্রথম উপায়:

let jsonData = require('./JsonFile.json')

let jsonData = require('./JsonFile') // যদি আমরা বাদ দিই .জসনও কাজ করে

অথবা

import jsonData from ('./JsonFile.json')

দ্বিতীয় উপায়:

1) একযোগে

const fs = require('fs')
let jsonData = JSON.parse(fs.readFileSync('JsonFile.json', 'utf-8'))

2) অবিচ্ছিন্নভাবে

const fs = require('fs')
let jsonData = {}
fs.readFile('JsonFile.json', 'utf-8', (err, data) => {
  if (err) throw err

  jsonData = JSON.parse(data)
})

দ্রষ্টব্য: 1) যদি আমরা জসনফিল.জসন পরিবর্তন করা হয় তবে আমরা নতুন ডেটা পাই না, এমনকি আমাদের পুনরায় চালানোর প্রয়োজন হলেও ('./ জসনফিল.জসন')

2) fs.readFile বা fs.readFileSync সবসময় ফাইলটি পুনরায় পড়বে এবং পরিবর্তনগুলি পাবে


নোট করুন যে fs পদ্ধতিটি সেই ডিরেক্টরিটি ব্যবহার করে যেখানে নোডটি একটি সূচনা পয়েন্ট হিসাবে চালু করা হয়েছিল, সেই ডিরেক্টরি নয় যেখানে পড়ার উত্স কোডটি বাস করে, যেখানে "প্রয়োজনীয়" পদ্ধতিটি আমদানি উত্স কোড অবস্থানের সাথে সম্পর্কিত পথটি ব্যবহার করে। সুতরাং আপনি বিভিন্ন ফোল্ডারে জিনিস সঞ্চয় করার সাথে সাথে আপনার দুটি পদ্ধতির মধ্যে পাথের মধ্যে পার্থক্য থাকবে।
উইল59

3

এমনকি আপনার জেএসওএন এর প্রয়োজনীয়তাও ব্যবহার করতে পারেন এক্সটেনশন .json উল্লেখ না করে । এটি আপনাকে আপনার আমদানিতে কোনও পরিবর্তন ছাড়াই ফাইল এক্সটেনশনটিকে .js এ পরিবর্তন করতে দেয়।

ধরে নিচ্ছি আমাদের একই ডিরেক্টরিতে ./myJsonFile.json আছে ।

const data = require('./myJsonFile')

ভবিষ্যতে যদি আপনি। /MyJsonFile.json থেকে ./myJsonFile.js পরিবর্তন করেন তবে আমদানিতে কোনও পরিবর্তন করা উচিত নয়।

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