सवाल मैं Json.NET से चाबियों की सूची कैसे प्राप्त कर सकता हूं?


मैं सी # और जेसन.NET का उपयोग कर रहा हूँ। अगर मेरे पास जॉब्जेक्ट है, तो मैं ऑब्जेक्ट के भीतर की चाबियों की एक सूची चाहता हूं, जैसा कि समान है object.Keys() वस्तु के भीतर चाबियाँ देता है। ऐसा लगता है कि यह स्पष्ट होगा, लेकिन मुझे ऐसा करने का कोई रास्ता खोजने में कोई समय नहीं है।

संपादित करें: मैं ऑब्जेक्ट के माध्यम से ट्रैवर्स कर रहा हूं, और जब मैं जाता हूं तो मैं ऑब्जेक्ट में सभी चाबियाँ थूकना चाहता हूं। मुझे एहसास है कि इस उदाहरण के परिणामस्वरूप एक ही कुंजी कई बार देखेगी, और यह मेरी आवश्यकताओं के लिए ठीक है।

public void SomeMethod(JObject parent) {
    foreach (JObject child in parent.Children()) {
        if (child.HasValues) {
        //
        // Code to get the keys here
        //
        SomeMethod(child);
        }
    }
}

44
2018-06-29 14:28


मूल


क्या आप एक कोड उदाहरण दे सकते हैं जिसका आप उपयोग कर रहे हैं? वैसे भी इस जेएरे आकार = (जेएरे) jobbject ["कुंजी"] की तरह smth कोशिश करें; - sll
दुर्भाग्य से यह सफल नहीं था। object["Keys"] "कुंजी" नाम के साथ कुंजी का मान देता है - John


जवाब:


IList<string> keys = parent.Properties().Select(p => p.Name).ToList();

प्रलेखन: JObject.Properties


108
2018-06-30 02:35



क्या इसे 5.0.8 संस्करण के रूप में हटा दिया गया है? क्योंकि अब मुझे जॉब्जेक्ट के लिए कुंजी नहीं मिल सकती है। - aminjam
@ बिगज नोप, यह नहीं है ... 5.0.8 पर इस सटीक कोड का परीक्षण किया और यह मेरे लिए ठीक काम करता प्रतीत होता है - Robert Petz
@ बिग एजे: क्या आपने सिस्टम आयात किया था। लिंक? चयन () क्वेरी करना आवश्यक है और इसके बिना उपलब्ध नहीं होगा। - Wolfgang Schreurs
जब तक मुझे यह पोस्ट नहीं मिला तब तक इसे समझने की कोशिश करने में 2 घंटे बिताए - reza
कुछ शोध के बाद मुझे अपना जवाब मिला, vb.net में आप इस वाक्यविन्यास का उपयोग करेंगे: Dim keys As List(Of String) = parent.Properties().Select(Function(p) p.Name).ToList() - JohnRDOrazio


से शब्दकोश कुंजी में JSON.NET जॉब्जेक्ट की गुण / टोकन को कनवर्ट करना

आप बस रूपांतरित कर सकते हैं JObject एक शब्दकोश वस्तु में और विधि का उपयोग करें Keys() शब्दकोश वस्तु से।

इस कदर:

using Newtonsoft.Json.Linq;
//jsonString is your JSON-formatted string
JObject jsonObj = JObject.Parse(jsonString);
Dictionary<string, string> dictObj = jsonObj.ToObject<Dictionary<string, string>>();

अब आप उन चाबियों को एक्सेस कर सकते हैं dictObj.Keys() तरीका। आप देख सकते हैं कि प्रदर्शन करके कोई कुंजी मौजूद है या नहीं dictObj.ContainsKey(keyName) भी।

जाहिर है, आप शब्दकोश को प्रारूपित कर सकते हैं हालांकि आप चाहते हैं (हो सकता है Dictionary<string, object>, आदि।)।


7
2018-03-29 17:20