2011-08-27 18 views
89

यदि मेरी प्रतिक्रिया में "त्रुटि" है तो मुझे त्रुटि को संसाधित करने और चेतावनी बॉक्स दिखाने की आवश्यकता है।json.net की मुख्य विधि है?

क्या json.net में "हैकी" विधि मौजूद है? तरह:

var x= JObject.Parse(string_my); 
if(x.HasKey["error_msg"]) 
    MessageBox.Show("Error!") 
+0

कृपया मेरा उत्तर [यहां] देखें (https://stackoverflow.com/a/47204235/1037314)। – Ben

+0

मैंने यहां एक ही समस्या के साथ एक प्रश्न का उत्तर दिया: https://stackoverflow.com/a/47204235/1037314 – Ben

+0

इस प्रश्न के दो प्रकार हैं: एक संस्करण वह है जहां JSON शब्दकोश फ्लैट (कोई बच्चा नहीं) और दूसरा, जहां कुंजी कहीं बच्चों के पदानुक्रम में है। इसे लिखने के समय, ns.json में अभी भी कोई सुविधा विधि नहीं है जो कुंजी के लिए परीक्षण तक आसान पहुंच प्रदान करेगी। – ljgww

उत्तर

156

बस x["error_msg"] का उपयोग करें। यदि संपत्ति मौजूद नहीं है, तो यह null लौटाती है।

+18

क्या होगा यदि संपत्ति का मूल्य 'शून्य 'है? –

+40

@AndreasFurster फिर यह एक 'JValue' वापस करेगा जिसका' मूल्य' 'शून्य 'है, न केवल' शून्य '। – svick

+0

यदि संपत्ति 'शून्य' हो सकती है तो आप 'x ["error_msg"] का उपयोग कर सकते हैं यह जांचने के लिए कि क्या JSON ऑब्जेक्ट – stonito

70

JObjectIDictionary<string, JToken> लागू करता है, तो आप उपयोग कर सकते हैं:

IDictionary<string, JToken> dictionary = x; 
if (dictionary.ContainsKey("error_msg")) 

... या आप TryGetValue इस्तेमाल कर सकते हैं। यह स्पष्ट इंटरफ़ेस कार्यान्वयन का उपयोग करके दोनों विधियों को लागू करता है, इसलिए आप पहले बिना IDictionary<string, JToken> पर परिवर्तित किए बिना उनका उपयोग नहीं कर सकते हैं।

+0

मैं पतला यह धीरे-धीरे स्वीकार्य उत्तर होगा, लेकिन धन्यवाद। – SevenDays

+2

@wsevendays, क्या आप यहां गति से बात करते हैं या सिर्फ सूक्ष्मदर्शीकरण कर रहे हैं (और अनुमान लगाते हैं)? आपको जो भी अधिक पठनीय लगता है उसका उपयोग करना चाहिए। – svick

+0

मेरे WP7 फोन के 1GHz प्रोसेसर की गति बहुत अच्छी नहीं है और मुझे गति की परवाह करने की आवश्यकता है। – SevenDays