JSON मानों को पुनर्प्राप्त करने के लिए सबसे अच्छा अभ्यास क्या है जो Json.NET का उपयोग कर सी # में भी मौजूद नहीं हो सकता है?जेटीकेन से मूल्य प्राप्त करें जो मौजूद नहीं हो सकता है (सर्वोत्तम प्रथाओं)
अभी मैं एक 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 दस्तावेज़ों का प्रयास किया, हालांकि मैं या तो अक्षम हूं मेरे प्रश्न का हल ढूंढ नहीं रहा है या यह दस्तावेज़ीकरण में स्पष्ट नहीं है।
मैं इसे थोड़ी देर हो चुकी है, लेकिन आप नीचे –