JSON मानों का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है जो Json.NET का उपयोग करके C # में भी मौजूद नहीं हो सकता है ?
अभी मैं एक JSON प्रदाता के साथ काम कर रहा हूं जो 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);
BTW, कृपया क्षमा करें जो वास्तव में गूंगा प्रश्न हो सकता है, क्योंकि ऐसा लगता है कि कुछ ऐसा होना चाहिए जिसके लिए फ़ंक्शन में बनाया जाना चाहिए ... मैंने Google और Json.NET प्रलेखन की कोशिश की , हालांकि मैं समाधान खोजने में असमर्थ हूं। मेरा प्रश्न या दस्तावेज में यह स्पष्ट नहीं है।
GetValue
नीचे के इस सरलीकृत संस्करण को आजमाना चाह सकते हैं