2016-10-02 6 views
5

मैं उपयुक्त एनोटेशन लेखन डेटा जो एक JSON से दिया जाता है अनुरोध जो इतनी तरह डेटा रिटर्न हासिल प्रतिनिधित्व करने के लिए कठिनाई हो रहा है deserializing:एक अनाम सरणी

[{"ProductCode":"0129923083091","Description":"DIESEL ","SalesLitres":6058.7347,"SalesValue":6416.2000},{"ProductCode":"0134039344902","Description":"UNLEADED ","SalesLitres":3489.8111,"SalesValue":3695.7100}, 
... 
] 

(सिर्फ यह दर्शाता है मैं चर संख्या हो सकता है इसके बाद के संस्करण अंडाकार की इन वस्तुओं लौटे)

अपने मॉडल कक्षा में (मैं एक Xamarin परियोजना के लिए MVVM दृष्टिकोण का उपयोग कर रहा है, लेकिन है कि प्रासंगिक से अधिक यहाँ नहीं है) मैं एनोटेशन उपयोग कर रहा हूँ मॉडल विशेषताओं

namespace App8.Models 
    { 

     public class ReportRow 
     { 
      [JsonProperty("ProductCode")] 
      public string ProductCode { get; set; } = string.Empty; 

      [JsonProperty("Description")] 
      public string Description { get; set; } = string.Empty; 

      [JsonProperty("SalesLitres")] 
      public double SalesLitres { get; set; } = 0.0; 

      [JsonProperty("SalesValue")] 
      public double SalesValue { get; set; } = 0.0;  
     } 
    } 
प्रतिनिधित्व करने के लिए 210

मैं एक और कक्षा को बताना चाहता हूं जो कंटेनर/निहित संबंध दिखाता है। हालांकि, मैं अनावश्यक आ रहा हूं क्योंकि लौटा संग्रह के "रूट" का प्रतिनिधित्व करने के लिए एनोटेशन में कोई JSON विशेषता नहीं है।

मुझे जेएसओएन को किसी भी जेएसओएन सरणी के लिए किसी ऑब्जेक्ट मॉडल में मैप करने में कोई समस्या नहीं होगी, जिसे वापस जेएसओएन के नाम पर रखा गया है। उस स्थिति में मैं एक नामांकित JSON विशेषता के साथ एक और कक्षा बना सकता हूं जिसमें सी # सूची शामिल है लेकिन मैं जेएसओएन के लिए उपयुक्त मॉडल मैपिंग प्रदान करने की कोशिश कर रहा हूं जो एक अनाम नाम के भीतर वस्तुओं की एक सूची देता है।

कोई विचार मैं कैसे संपर्क कर सकता हूं?

+1

एक अच्छी तरह से तैयार किए गए पहले प्रश्न पर बधाई! – Kroltan

उत्तर

4

कि JSON, उपयोग deserialize करने के लिए:

JsonConvert.DeserializeObject<List<ReportRow>>(json) 

(या किसी संस्करण आप चाहते हैं, यहाँ मुख्य ReportRow के ICollection deserialize करने के लिए पूछ रहा है वह आपके अपने ICollection को लागू करने वर्ग, या के किसी भी हो सकता है। बिल्टिन)

वही विचार JsonTextReader या JSON.NET ऑफ़र को बेकार करने के अन्य साधनों का पालन करता है। लक्ष्य प्रकार के रूप में बस ICollection<YourType> का उपयोग करें।

+0

धन्यवाद क्रोलटन। ऐसा लगता है कि मैं इसे सही तरीके से कर रहा हूं, इसलिए मैं इसे निराश करने के लिए कर रहा हूं। मेरी समस्याएं स्टैक को आगे बढ़ा रही हैं ताकि ज़ैमरिन रूपों के भीतर और मैं उस सूची में एक व्यूमोडेल इत्यादि के अंदर कैसे बंधूं। कम से कम मुझे यह सत्यापित करने में सहायता करता है कि मैं JSON को deserializing करने के लिए सही दृष्टिकोण का उपयोग कर रहा हूं। – retail3r

+0

@ user6911358 हां, यह आमतौर पर रूट सरणी को deserializing करने के लिए सही दृष्टिकोण है। यदि आपको वास्तव में अपने स्वयं के प्रकार की आवश्यकता है (उदाहरण के लिए एक कस्टम इंटरफ़ेस लागू करने के लिए), तो आप केवल 'सूची ' प्रकार, या कुछ अन्य संग्रह को उपclass कर सकते हैं। वास्तव में आवश्यक होने पर भी अपना खुद का कार्यान्वयन करें। लेकिन यह शायद, बहुत नहीं होना चाहिए। अपने Xamarin संदेह के साथ एक और सवाल पोस्ट करें और इसे यहां लिंक करें। – Kroltan

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