IENumerable को लागू करने वाले कुछ कस्टम प्रकारों में बैकिंग संग्रह आवश्यक नहीं हैं। उन्हें गतिशील रूप से उत्पन्न किया जा सकता है, उदाहरण के लिए 'उपज' या LINQ का उपयोग करना।मैं Json.Net में IENumerable प्रकारों के लिए डिफ़ॉल्ट जावास्क्रिप्ट सरणी क्रमबद्धता कैसे छोड़ूं?
public class SOJsonExample
{
public class MyCustomEnumerable : IEnumerable<KeyValuePair<int,float>>
{
public List<int> Keys { get; set; }
public List<float> Values { get; set; }
public MyCustomEnumerable()
{
Keys = new List<int> { 1, 2, 3 };
Values = new List<float> { 0.1f, 0.2f, 0.3f };
}
public IEnumerator<KeyValuePair<int, float>> GetEnumerator()
{
var kvps =
from key in Keys
from value in Values
select new KeyValuePair<int, float>(key, value);
return kvps.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}
}
मैं ने पाया है कि Json.NET द्वारा चूक क्रमबद्धता प्रत्येक मान की गणना और JavaScript शृंखला में मूल्यों (है जो मैं नहीं चाहता) स्टोर करने के लिए है: यहाँ एक उदाहरण है। डिफ़ॉल्ट deserializer तब संग्रह को deserialize करने में विफल हो जाएगा क्योंकि यह पॉप्युलेट नहीं किया जा सकता है। इन मामलों में, मैं इसके बजाय जेसन.NET को डिफ़ॉल्ट जावास्क्रिप्ट सरणी क्रमबद्धता को छोड़ना चाहता हूं, और बस कक्षा के सदस्यों को स्टोर करना चाहता हूं।
मुझे बस मेरी चाबियाँ और मूल्य चाहिए - क्या ऐसा करने का कोई शॉर्टकट तरीका है, या क्या मुझे अपना कस्टम सीरियलाइज़र लागू करना है?
this और this चेक किया गया, इनमें से कोई भी वास्तव में मेरा प्रश्न नहीं है। स्कैन the documentation साथ ही, लेकिन जो भी मैं ढूंढ रहा था उसे नहीं मिला (शायद मैंने गलत जगह पर देखा)।
(संपादित करें # 1 - बेहतर स्पष्टता)
(संपादित करें # 2 - अपने ही सवाल का जवाब दे ... नीचे देखें)
यह पृष्ठ 'JsonObject' और अन्य विशेषताओं के कारण वर्णन है। http://www.newtonsoft.com/json/help/html/SerializationAttributes.htm – kmc059000