JSON.NET ব্যবহার করে সি # তেও না থাকতে পারে এমন JSON মানগুলি পুনরুদ্ধার করার জন্য সেরা অনুশীলনটি কী ?
এই মুহুর্তে আমি এমন একটি জেএসএন সরবরাহকারীর সাথে কাজ করছি যা জেএসএনকে ফেরত দেয় যা মাঝে মাঝে নির্দিষ্ট কী / মান জুটি থাকে এবং কখনও কখনও তা করে না। আমি আমার মানগুলি পেতে (সম্ভবত ভুলভাবে) এই পদ্ধতিটি ব্যবহার করেছি (দ্বিগুণ হওয়ার উদাহরণ):
if(null != jToken["width"])
width = double.Parse(jToken["width"].ToString());
else
width = 100;
এখন এটি দুর্দান্ত কাজ করে, তবে যখন তাদের প্রচুর পরিমাণ রয়েছে তখন এটি জটিল। আমি একটি এক্সটেনশন পদ্ধতি লিখতে শেষ করেছি, এবং কেবল এটি লেখার পরে আমি ভাবছিলাম যে আমি বোকা হয়ে যাচ্ছি কিনা ... যাইহোক, এখানে এক্সটেনশন পদ্ধতিটি রয়েছে (আমি কেবল ডাবল এবং স্ট্রিংয়ের ক্ষেত্রে অন্তর্ভুক্ত করি তবে বাস্তবে আমার বেশ কয়েকটি আছে) আরো):
public static T GetValue<T>(this JToken jToken, string key,
T defaultValue = default(T))
{
T returnValue = defaultValue;
if (jToken[key] != null)
{
object data = null;
string sData = jToken[key].ToString();
Type type = typeof(T);
if (type is double)
data = double.Parse(sData);
else if (type is string)
data = sData;
if (null == data && type.IsValueType)
throw new ArgumentException("Cannot parse type \"" +
type.FullName + "\" from value \"" + sData + "\"");
returnValue = (T)Convert.ChangeType(data,
type, CultureInfo.InvariantCulture);
}
return returnValue;
}
এবং এখানে এক্সটেনশন পদ্ধতিটি ব্যবহার করার একটি উদাহরণ রয়েছে:
width = jToken.GetValue<double>("width", 100);
বিটিডাব্লু, দয়া করে যা সত্যিই বোবা প্রশ্ন হতে পারে তা ক্ষমা করুন, যেহেতু মনে হচ্ছে এটির জন্য কোনও ফাংশন বিল্ট হওয়া উচিত ... আমি গুগল এবং জসন.এনইটি ডকুমেন্টেশন চেষ্টা করেছিলাম, তবে আমি এর সমাধান সন্ধান করতেই অক্ষম আমার প্রশ্ন বা এটি ডকুমেন্টেশনে পরিষ্কার নয়।
GetValue
নীচের এই সরল সংস্করণটি ব্যবহার করতে চাইতে পারেন