কিভাবে C ++ এ JSON পার্স করবেন

How Parse Json C



এই টিউটোরিয়ালের উদ্দেশ্য হল JSON ডেটা বোঝা এবং কিভাবে C ++ এ JSON ডেটা বিশ্লেষণ করা যায়। আমরা JSON ডেটা, অবজেক্ট, অ্যারে, JSON সিনট্যাক্স নিয়ে আলোচনা করব এবং তারপর C ++ এ JSON ডেটার পার্সিং মেকানিজম বোঝার জন্য বেশ কয়েকটি কাজের উদাহরণ দিয়ে যাব।

JSON কি?

JSON একটি সংগঠিত উপায়ে স্ট্রাকচার্ড ডেটা সংরক্ষণ এবং স্থানান্তর করার জন্য একটি হালকা ওজনের টেক্সট-ভিত্তিক উপস্থাপনা। JSON ডেটা অর্ডার করা তালিকা এবং কী-ভ্যালু জোড়া আকারে উপস্থাপন করা হয়। JSON মানে জে ava এস পঙ্গু অথবা বাজে এন ওটেশন পুরো নামটি ইঙ্গিত করে, এটি জাভাস্ক্রিপ্ট থেকে উদ্ভূত। যাইহোক, JSON ডেটা বেশিরভাগ জনপ্রিয় প্রোগ্রামিং ভাষায় সমর্থিত।







এটি প্রায়শই সার্ভার থেকে একটি ওয়েব পৃষ্ঠায় ডেটা স্থানান্তর করতে ব্যবহৃত হয়। XML এর তুলনায় JSON- এ স্ট্রাকচার্ড ডেটা উপস্থাপন করা অনেক সহজ এবং পরিষ্কার।



JSON সিনট্যাক্স নিয়ম

এখানে JSON সিনট্যাক্স নিয়ম আছে:



  1. JSON ডেটা সবসময় কী-ভ্যালু পেয়ারের আকারে থাকা উচিত।
  2. JSON ডেটা কমা দ্বারা আলাদা করা হয়।
  3. JSON অবজেক্টের প্রতিনিধিত্ব করতে একটি কোঁকড়া ব্রেস ব্যবহার করা হয়।
  4. একটি বর্গাকার বন্ধনী একটি JSON অ্যারে উপস্থাপন করতে ব্যবহৃত হয়।

JSON ডেটা কি?

JSON ডেটা কী-ভ্যালু পেয়ারের আকারে উপস্থাপন করা হয়। এটি অন্যান্য প্রোগ্রামিং ভাষার অভিধান বা হ্যাশের মতো।





নাম: ড্রেক

এটি সাধারণ JSON ডেটার একটি উদাহরণ। এখানে কী হল নাম এবং ড্রেক হল সংশ্লিষ্ট মান। কী, যেমন, নাম এবং মান, অর্থাৎ, ড্রেক একটি কোলন দ্বারা পৃথক করা হয়।



JSON ফাইল এক্সটেনশন

JSON ডেটা সাধারণত .json এর এক্সটেনশন সহ ফাইলে সংরক্ষণ করা হয়। উদাহরণস্বরূপ, কর্মচারীর ডেটা সঞ্চয় করার জন্য, আপনি কেবল ফাইলটিকে 'কর্মচারী.জসন' হিসাবে নাম দিতে পারেন। এটি একটি সাধারণ টেক্সট ফাইল হবে। তারপরে আপনি এই JSON ফাইলটি আপনার পছন্দের পাঠ্য সম্পাদকদের মধ্যে খুলতে পারেন।

JSON অবজেক্ট

JSON বস্তু কোঁকড়া ধনুর্বন্ধনীগুলির মধ্যে আবদ্ধ JSON ডেটা ছাড়া আর কিছুই নয়। এখানে একটি নমুনা JSON বস্তু:

{
নাম:ড্রাক,
কর্মচারী আইডি:23547 এ,
ফোন: 23547,
বিভাগ:অর্থায়ন
}

একটি JSON অবজেক্টে একাধিক JSON ডেটা থাকতে পারে। প্রতিটি JSON ডেটা কমা দ্বারা আলাদা করা হয়। JSON ডেটা কী-ভ্যালু পেয়ার হিসেবে উপস্থাপন করা হয়। কী, যেমন, নাম এবং মান, অর্থাৎ, ড্রেক একটি কোলন দ্বারা পৃথক করা হয়। উপরের উদাহরণে, চারটি কী-মান জোড়া রয়েছে। প্রথম কী হল নাম; ড্রেক এর জন্য সংশ্লিষ্ট মান। একইভাবে, কর্মচারী আইডি, ফোন এবং বিভাগ অন্য তিনটি কী।

JSON অ্যারে

একটি JSON অ্যারেতে বেশ কয়েকটি কমা-বিচ্ছিন্ন JSON বস্তু থাকতে পারে। JSON অ্যারে একটি বর্গাকার বন্ধনীতে আবদ্ধ। আসুন একটি JSON অ্যারের একটি উদাহরণ দেখি:

'ছাত্র':[
{'নামের প্রথম অংশ':'শন', 'নামের শেষাংশ':'বাদামী'},
{'নামের প্রথম অংশ':'ড্রেক', 'নামের শেষাংশ':'উইলিয়ামস'},
{'নামের প্রথম অংশ':'টম', 'নামের শেষাংশ':'মিলার'},
{নামের প্রথম অংশ:পিটার,নামের শেষাংশ:জনসন}
]

এটি একটি JSON অ্যারের উদাহরণ। এখানে, শিক্ষার্থীদের একটি বর্গাকার বন্ধনী, অর্থাৎ, অ্যারে দিয়ে আবদ্ধ করা হয়েছে এবং এতে চারটি JSON বস্তু রয়েছে। এই বস্তুর প্রত্যেকটি কী-মান জোড়া আকারে প্রতিনিধিত্ব করা হয় এবং একটি কমা দ্বারা পৃথক করা হয়।

একটি নমুনা JSON ফাইল

এখন, যেহেতু আমরা JSON ডেটা, JSON বস্তু, JSON অ্যারে বুঝতে পেরেছি, আসুন একটি JSON ফাইলের উদাহরণ দেখি:

{
নামের প্রথম অংশ:শন,
নামের শেষাংশ:বাদামী,
শিক্ষার্থী আইডি: 21453,
বিভাগ:কম্পিউটার Sc।,
বিষয়:[গণিত,Phy,কেম]
}

C ++ এ লাইব্রেরি পার্স করা:

C ++ এ JSON ডেটা পার্স করার জন্য কোন স্থানীয় সমাধান নেই। যাইহোক, সি ++ এ JSON ডেটা বিশ্লেষণ করার জন্য বেশ কয়েকটি লাইব্রেরি রয়েছে। এই নিবন্ধে, আমরা C ++ এ JSON ডেটা বিশ্লেষণ করার জন্য দুটি জনপ্রিয় লাইব্রেরির দিকে নজর দিতে যাচ্ছি। JSON ডেটা পার্স করার জন্য এখানে GitHub লিঙ্ক দেওয়া হল:

  1. https://github.com/nlohmann/json
  2. https://github.com/Tencent/rapidjson/

আপনি নীচের দেখানো উদাহরণগুলি চালাতে সক্ষম হতে এই লাইব্রেরিগুলি ডাউনলোড করতে চাইতে পারেন।

উদাহরণ

এখন, আমাদের JSON ডেটা, অবজেক্ট, অ্যারে এবং উপলব্ধ পার্সিং লাইব্রেরি সম্পর্কে প্রাথমিক ধারণা রয়েছে। আসুন এখন C ++ এ JSON ডেটা বিশ্লেষণ করার জন্য কয়েকটি উদাহরণ দেখি:

  • উদাহরণ -1: C ++ এ JSON পার্স করুন
  • উদাহরণ -২: সি ++ এ JSON পার্স এবং সিরিয়ালাইজ করুন
  • উদাহরণ-3: C ++ এ JSON পার্স করুন

উদাহরণ -1 এবং উদাহরণ -2 এর জন্য, আমরা nlohmann লাইব্রেরি ব্যবহার করতে যাচ্ছি। উদাহরণ -3 এর ক্ষেত্রে, আমরা RapidJSON লাইব্রেরি ব্যবহার করব।

উদাহরণ -1: C ++ এ JSON পার্স করুন

এই উদাহরণ প্রোগ্রামে, আমরা দেখাবো কিভাবে C ++ এ JSON ডেটার মান অ্যাক্সেস করতে হয়।

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত 'json.hpp'

json ব্যবহার করে=nlohmann::json;

intপ্রধান()
{

// jdEmployees
json jdEmployees=
{
{'নামের প্রথম অংশ','শন'},
{'নামের শেষাংশ','বাদামী'},
{'শিক্ষার্থী আইডি',21453},
{'বিভাগ','কম্পিউটার এসসি।'}
};

// মানগুলি অ্যাক্সেস করুন
ঘন্টার::স্ট্রিংfName=jd কর্মচারী।মান('নামের প্রথম অংশ', 'উফ');
ঘন্টার::স্ট্রিংl নাম=jd কর্মচারী।মান('নামের শেষাংশ', 'উফ');
intsID=jd কর্মচারী।মান('শিক্ষার্থী আইডি', 0);
ঘন্টার::স্ট্রিংবিভাগ=jd কর্মচারী।মান('বিভাগ', 'উফ');

// মানগুলি মুদ্রণ করুন
ঘন্টার::খরচ << 'নামের প্রথম অংশ: ' <<fName<<ঘন্টার::endl;
ঘন্টার::খরচ << 'নামের শেষাংশ: ' <<l নাম<<ঘন্টার::endl;
ঘন্টার::খরচ << 'শিক্ষার্থী আইডি: ' <<sID<<ঘন্টার::endl;
ঘন্টার::খরচ << 'বিভাগ:' <<বিভাগ<<ঘন্টার::endl;

প্রত্যাবর্তন 0;
}

উদাহরণ -২: সি ++ এ JSON পার্স এবং সিরিয়ালাইজ করুন

এই উদাহরণ প্রোগ্রামে, আমরা দেখতে যাচ্ছি কিভাবে সি ++ এ JSON পার্স এবং সিরিয়ালাইজ করতে হয়। আমরা JSON ডেটা বিশ্লেষণ করতে json :: parse () ব্যবহার করছি।

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত 'json.hpp'
#অন্তর্ভুক্ত

json ব্যবহার করে=nlohmann::json;

intপ্রধান()
{
// এখানে একটি JSON পাঠ্য
গৃহস্থালিপাঠ্য[] =আর'(
{
'
বই': {
'
প্রস্থ': 450,
'
উচ্চতা': 30,
'
শিরোনাম':'ওহে বিশ্ব',
'
জীবনী': মিথ্যা,
'
NumOfCopies': 4,
'
লাইব্রেরি আইডি': [2319, 1406, 3854, 987]
}
}
) '
;

// আসুন JSON বিশ্লেষণ এবং সিরিয়ালাইজ করি
json j_complete=json::বিশ্লেষণ(পাঠ্য);
ঘন্টার::খরচ <<ঘন্টার::সেট(4) <<j_complete<<ঘন্টার::endl;
}

উদাহরণ-3: C ++ এ JSON পার্স করুন

এখন, আমরা দেখাব কিভাবে RapidJSON লাইব্রেরি ব্যবহার করে JSON স্ট্রিং বিশ্লেষণ করতে হয়। RapidJSON মূলত RapidXML দ্বারা অনুপ্রাণিত হয়েছিল। এই উদাহরণ প্রোগ্রামে, আমরা একটি JSON স্ট্রিংকে DOM এ বিশ্লেষণ করছি। আমরা mydoc টাইপ ডকুমেন্ট ঘোষণা করেছি এবং তারপর JSON স্ট্রিং বিশ্লেষণ করতে mydoc.parse () পদ্ধতি ব্যবহার করে।

#অন্তর্ভুক্ত
#অন্তর্ভুক্ত 'Rapidjson/writer.h'
#অন্তর্ভুক্ত 'Rapidjson/document.h'
#অন্তর্ভুক্ত 'Rapidjson/stringbuffer.h'

নামস্থান র্যাপিডজসন ব্যবহার করে;

intপ্রধান()
{

const গৃহস্থালি*json= '{'নামের প্রথম অংশ':'শন','নামের শেষাংশ':'বাদামী','empId': 21453,
'
বিভাগ':'কম্পিউটার Sc।'}';

// JSON স্ট্রিংকে DOM এ বিশ্লেষণ করুন
ডকুমেন্ট mydoc;
mydoc।পার্স(json);

// DOM থেকে স্ট্রিং
স্ট্রিংবাফার বাফার;
লেখক<স্ট্রিংবাফার>লেখক(বাফার);

mydoc।গ্রহণ করুন(লেখক);

// আউটপুট প্রিন্ট করুন
ঘন্টার::খরচ <<বাফারGetString() <<ঘন্টার::endl;

প্রত্যাবর্তন 0;
}

উপসংহার

এই নিবন্ধে, আমরা সংক্ষেপে আলোচনা করেছি JSON ডেটা, অবজেক্ট, অ্যারে এবং সিনট্যাক্স। যেমন আমরা জানি, C ++ এ JSON ডেটা পার্সিং এর কোন নেটিভ সমাধান নেই; আমরা C ++ এ JSON ডেটা বিশ্লেষণ করতে দুটি ভিন্ন লাইব্রেরি ব্যবহার করেছি। আমরা C ++ এ JSON ডেটা পার্সিং মেকানিজম প্রদর্শনের জন্য তিনটি ভিন্ন উদাহরণ দেখেছি। Nlohmann লাইব্রেরির তুলনায়, RapidJSON ছোট, দ্রুত এবং স্মৃতি-বান্ধব।