আমি আরডুইনোর কয়েকটি JSON পার্সিং গ্রন্থাগার সম্পর্কে অবগত aware
আমি এর কোনটিই ব্যবহার করি নি তবে আমি যে প্রকল্পে কাজ করছি তাতে কিছু সাধারণ জেএসএন পার্সিং করেছি তাই আমি কীভাবে এটি করেছি তা আপনাকে দেখাব।
দ্রষ্টব্য: আমি সফ্টওয়্যার সিরিয়াল লাইব্রেরি ব্যবহার করে সিরিয়াল ডেটা পড়ছি। আপনার জন্য কাজ করার জন্য আপনাকে এই কোডটি পরিবর্তন করতে হবে। এটি কেবল খুব সাধারণ JSON স্ট্রিংয়ে কাজ করবে। এটি খুব সীমাবদ্ধ তবে এটি যদি আপনি পার্সিং করছেন তবে এটি কাজ করবে।
সার্ভার থেকে জেএসএন প্রতিক্রিয়ার উদাহরণ:
{"id":"TEST1","lat":"38.56050207","lng":"-121.42158374","total":"3","available":"2"}
প্রথমত, কেবল কোঁকড়ানো ধনুর্বন্ধনী এর মধ্যে ডেটা পড়ুন
String response = "";
bool begin = false;
while (SIM900.available() || !begin) {
char in = SIM900.read();
if (in == '{') {
begin = true;
}
if (begin) response += (in);
if (in == '}') {
break;
}
delay(1);
}
এই কোডটি ডেটা একবারে বাইট পড়ে এবং একবার এটি একটি খোলার ব্রেস পেলে এটি এতে সংরক্ষণ শুরু করে response। যখন এটি একটি বন্ধনী বন্ধনী পায়, এটি এটি শেষ করে। সুতরাং এখানে একটি স্পষ্ট সীমাবদ্ধতা রয়েছে, আপনার স্ট্রিংয়ে কেবলমাত্র একটি সেট খোলা / বন্ধ করতে পারেন।
আমার একবার স্ট্রিং হয়ে গেলে আমি ব্যবহার করি indexOfএবং substringপ্রাসঙ্গিক তথ্য বের করতে পারি :
start = response.indexOf("id\":\"") + 5;
end = start + 5;
nodeId = response.substring(start, end);
এই কোডটি স্ট্রিংয়ের + 5 টি অক্ষরের startশুরুতে সেট করে id":"। এটি +5 কারণ এটি কত দিন id":"। সুতরাং JSON স্ট্রিং মধ্যে startপয়েন্ট TEST1। আমার সিস্টেমে আইডিটি সর্বদা 5 টি অক্ষর হতে চলেছে তাই শেষ হয় start + 5। আমি তারপর substringএটি নিষ্কাশন করতে ব্যবহার ।
আবার, কেউ এই ভয়াবহ সমাধানের জন্য আমাকে ভোট দেওয়া শুরু করার আগে: আপনি কী নিয়ে কাজ করছেন তা যদি আপনি সঠিকভাবে জানেন এবং এই কোডটির সীমাবদ্ধতাগুলি বুঝতে পারেন তবে এটি কোনও খারাপ সমাধান নয়। এটি একটি সমাধান যা কাজটি সম্পন্ন করে।