সি # তে কীভাবে জেএসএন ফাইল লিখবেন?


145

আমাকে সি # তে JSON ফর্ম্যাট ব্যবহার করে একটি পাঠ্য ফাইলে নিম্নলিখিত তথ্য লিখতে হবে। বৈধ JSON ফর্ম্যাট হওয়ার জন্য বন্ধনীগুলি গুরুত্বপূর্ণ।

[
  {
    "Id": 1,
    "SSN": 123,
    "Message": "whatever"

  },
  {
   "Id": 2,
    "SSN": 125,
    "Message": "whatever"
  }
]

এখানে আমার মডেল ক্লাস:

public class data
{
    public int Id { get; set; }
    public int SSN { get; set; }
    public string Message { get; set;}
}

উত্তর:


274

আমি জসন.নেটকে সুপারিশ করব , নীচের উদাহরণটি দেখুন:

List<data> _data = new List<data>();
_data.Add(new data()
{
    Id = 1,
    SSN = 2,
    Message = "A Message"
});

string json = JsonConvert.SerializeObject(_data.ToArray());

//write string to file
System.IO.File.WriteAllText(@"D:\path.txt", json);

বা উপরের কোডটির কিছুটা দক্ষ সংস্করণ (বাফার হিসাবে স্ট্রিং ব্যবহার করে না):

//open file stream
using (StreamWriter file = File.CreateText(@"D:\path.txt"))
{
     JsonSerializer serializer = new JsonSerializer();
     //serialize object directly into file stream
     serializer.Serialize(file, _data);
}

ডকুমেন্টেশন: একটি ফাইলের জন্য JSON সিরিয়াল করুন


কেন? সাধারণ সিরিয়ালার পাশাপাশি বেনমার্ক পরীক্ষার between ‡ এর মধ্যে একটি বৈশিষ্ট্যের তুলনা এখানে ‡

নীচে লিঙ্কযুক্ত নিবন্ধ থেকে নেওয়া পারফরম্যান্সের একটি গ্রাফ দেওয়া হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

এই পৃথক পোস্টে বলা হয়েছে:

জসন.এনইটি সর্বদা স্মৃতিশক্তি দক্ষ ছিল, পড়ার স্ট্রিমিং করে এবং বড় বড় দলিলগুলি সম্পূর্ণ স্মৃতিতে লোড না করে লেখার জন্য স্ট্রিম করে তবে আমি বেশ কয়েকটি মূল জায়গা খুঁজে পেতে সক্ষম হয়েছি যেখানে অবজেক্টের বরাদ্দ হ্রাস করা যেতে পারে ...... (এখন) জসন.নেট ( .0.০ ) জাভাস্ক্রিপ্টসরিয়ালাইজারের চেয়ে 8 গুণ কম মেমরি বরাদ্দ করেছে


নেট কোর 3.0 এর পর থেকে আপডেট

এটি লেখার পর থেকে ব্লকের একটি নতুন বাচ্চা System.Text.Jsonযা। নেট কোর 3.0.০ এ যুক্ত হয়েছে। মাইক্রোসফট এই হল কিভাবে, এখন বেশ কয়েকটি দাবি, Newtonsoft চেয়ে আরও ভাল করে । সহ এটা Newtonsoft তুলনায় দ্রুততর । উপরের হিসাবে, আমি এই নিজেকে পরীক্ষা করার জন্য আপনাকে উপদেশ চাই

† বেঞ্চমার্কগুলি জসন.নেট 5 হিসাবে উপস্থিত হয়, বর্তমান সংস্করণ (লেখার জন্য) 10 হয় standard মানকটির কোন সংস্করণ used

Tests এই পরীক্ষাগুলি অবশ্যই বিকাশকারীদের বিকাশকারীদের কাছ থেকে। তাদের দাবি আমি যাচাই করে দেখিনি । সন্দেহ হলে সেগুলি নিজেই পরীক্ষা করে দেখুন।


1
JSON.NET কীভাবে ক্লাস JavaScriptSerializerএবং DataContractJsonSerializerক্লাস দ্বারা সরবরাহ করা অন্তর্নির্মিত সমর্থন থেকে আলাদা ?
রবার্ট হার্ভে

2
@ রবার্টহারভি লিয়ামের জসন. নেট লিঙ্কটিতে পার্থক্য কী তা দেখানোর জন্য একটি দুর্দান্ত টেবিল রয়েছে। এটি তৈরি করা লোকদের কাছ থেকে আগত, অবশ্যই আপনার এটি নুনের দানার সাথে নেওয়া উচিত তবে এটি অন্তর্নির্মিত জিনিসগুলির চেয়ে ভাল।
টিম এস

1
হ্যাঁ আমাকে বারবার ফাইলটিতে
সংযোজন

1
সেক্ষেত্রে আপনাকে ফাইলটি পড়তে হবে, এটিকে বস্তুতে পার্স করতে হবে, অবজেক্টগুলিতে যুক্ত করতে হবে, তারপরে আবার পার্স আউট করতে হবে।
লিয়াম

4
@ ড্রু নোকস যদি আপনি কোনও ফাইলকে প্রথমে স্মৃতিতে না রেখে লিখতে চান, তবে JSON.NET james.newtonking.com/archive/2009/02/14/…
gcoleman0828

61

লিয়ামের উত্তরের উদাহরণটি ফাইলটিকে একক লাইনে স্ট্রিং হিসাবে সংরক্ষণ করে। আমি ফর্ম্যাটিং যুক্ত করতে পছন্দ করি ভবিষ্যতে কেউ ফাইলটিতে ম্যানুয়ালি কিছু মান পরিবর্তন করতে চাইতে পারেন। আপনি যদি ফর্ম্যাটিং যোগ করেন তবে এটি করা সহজ।

নিম্নলিখিতটি বেসিক জেএসওএন ইন্ডেন্টেশন যুক্ত করেছে:

 string json = JsonConvert.SerializeObject(_data.ToArray(), Formatting.Indented);


4
var responseData = //Fetch Data
string jsonData = JsonConvert.SerializeObject(responseData, Formatting.None);
System.IO.File.WriteAllText(Server.MapPath("~/JsonData/jsondata.txt"), jsonData);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.