2013-09-26 11 views
22

मैं जेएसओएन ऐरे की लंबाई को सी # में json.net का उपयोग करके कैसे प्राप्त कर सकता हूं? एक एसओएपी कॉल भेजने के बाद मुझे एक JSON स्ट्रिंग उत्तर के रूप में मिलता है, मैं इसे पार्स करने के लिए json.net का उपयोग करता हूं। json केसरणी की लंबाई प्राप्त करें JSON.Net

उदाहरण मुझे मिल गया:

{"JSONObject": [ 
    {"Id":"ThisIsMyId","Value":"ThisIsMyValue"}, 
    {"Id":"ThisIsMyId2","Value":"ThisIsMyValue2"} 
]} 

और मैं यह पार्स और कंसोल में लिखने:

var test = JObject.Parse (json); 
Console.WriteLine ("Id: {0} Value: {1}", (string)test["JSONObject"][0]["Id"], (string)test["JSONObject"][0]["Value"]); 

यह एक जादू की तरह काम करता है, केवल मैं की लंबाई पता नहीं है JSONObject, लेकिन मुझे इसे लूप में करने की ज़रूरत है। मैं केवल पता नहीं मैं कैसे परीक्षण [ "JSONObject"] की तरह "परीक्षण की लंबाई [" JSONObject "]"

लेकिन कुछ प्राप्त कर सकते हैं। लंबाई भी आसान मुझे लगता है :(होगा ..

उत्तर

39

आप इसलिए तरह एक JArray करने के लिए वस्तु डाल सकता है और फिर Count संपत्ति का उपयोग करें,:

JArray items = (JArray)test["JSONObject"]; 
int length = items.Count; 

फिर आप पाश आइटम के रूप में इस कर सकते हैं:

for (int i = 0; i < items.Count; i++) 
{ 
    var item = (JObject)items[i]; 
    //do something with item 
} 

,210

Onno (ओपी) के अनुसार, आप निम्न का उपयोग भी कर सकते हैं:

int length = test["JSONObject"].Count(); 

हालांकि, मैं व्यक्तिगत रूप से नहीं की पुष्टि की है कि यह काम करेगा

+0

आप के लिए 'JArray' को कास्ट करने के लिए की जरूरत नहीं है उस? – svick

+0

मैंने कोशिश की, जैसा कि मैंने कहीं और देखा था। लेकिन कुछ कारण मैंने गिनती() की बजाय कोशिश नहीं की, जो काम करता है। मुझे मेरी मूर्खता के लिए बहुत खेद है: ओ – Onno

+0

@ ओनो: क्या आप कह रहे हैं कि 'गणना()' काम करता है? यदि ऐसा है तो मैं – musefan

संबंधित मुद्दे