का उपयोग कर कॉम्प्लेक्स कुंजी के साथ शब्दकोश को क्रमबद्ध करने में सक्षम नहीं है। मेरे पास एक कस्टम .net के साथ एक शब्दकोश है जो इसकी कुंजी के रूप में टाइप है। मैं JSON.net का उपयोग करके इस शब्दकोश को जेएसओएन में क्रमबद्ध करने की कोशिश कर रहा हूं, हालांकि यह कुंजी को कनवर्ट करने में सक्षम नहीं है सीरियलाइजेशन के दौरान उचित मूल्य।Json.net
class ListBaseClass
{
public String testA;
public String testB;
}
-----
var details = new Dictionary<ListBaseClass, string>();
details.Add(new ListBaseClass { testA = "Hello", testB = "World" }, "Normal");
var results = Newtonsoft.Json.JsonConvert.SerializeObject(details);
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<ListBaseClass, string>> results);
यह मुझे दो -> "{\" JSonSerialization.ListBaseClass \ ": \" सामान्य \ "}"
लेकिन अगर मैं शब्दकोश में मूल्य के रूप में अपने कस्टम प्रकार है यह अच्छी तरह से काम करता है
var details = new Dictionary<string, ListBaseClass>();
details.Add("Normal", new ListBaseClass { testA = "Hello", testB = "World" });
var results = Newtonsoft.Json.JsonConvert.SerializeObject(details);
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, ListBaseClass>>(results);
यह मुझे दो -> "{\" सामान्य \ ": {\" टेस्टा \ ": \" हैलो \ ", \" testB \ ": \" दुनिया \ "}}"
क्या कोई सुझाव दे सकता है कि मैं जेसननेट की कुछ सीमा मार रहा हूं या मैं कुछ गलत कर रहा हूं?
यह जटिल शब्दकोश कुंजी के साथ किसी समस्या को हल करने के लिए हमारे लिए काम करता है। जहां क्लास घोंसले में विभिन्न ठोस कार्यान्वयन के साथ एक सामान्य वर्ग का उपयोग किया जा रहा था, हमारे कस्टम जेसन कनवर्टर जटिल कुंजी वर्ग पर घोषणात्मक विशेषता का उपयोग करके काम नहीं करते थे - हमें इसे 'जेसन कन्वर्ट.रियललाइज ऑब्जेक्ट' के लिए एक तर्क के रूप में पास करना पड़ा, जो काम करता था लेकिन कम वांछनीय था। – mungflesh
मुझे यह भी एक जटिल शब्दकोश कुंजी प्रकार के लिए काम कर रहा है। दूसरों के लिए नोट - यह JSON.Net पैकेज में JSONTypeConverter सामान से स्वतंत्र है। इसके अलावा, कोई JSON सेटिंग्स नहीं थीं जिसके लिए इसका उपयोग करने की आवश्यकता थी। इस जवाब में वास्तव में वही है जो आपको करने की ज़रूरत है। मुझे शुरुआत में अतिरंजित कार्यों के अंदर ब्रेकपॉइंट्स को उपयोगी बनाने के लिए उपयोगी पाया गया था, जब उन्हें इस्तेमाल किया गया था और उन्हें क्या करने के लिए कहा गया था, तो बेहतर समझ हासिल करने के लिए। – DaveInCaz
ग्रेट उत्तर, भले ही यह मेरे लिए काम नहीं करता है, क्योंकि मैं विंडोज फोन 8.1 का उपयोग कर रहा हूं, जहां System.ComponentModel.TypeConverter समर्थित नहीं है। – user3141326