मेरे पास दोगुनी सूची है जो मैं deserialise करने की कोशिश कर रहा हूँ।जेएसओएन। संरक्षित संदर्भों का सम्मान नहीं करते हैं Deserialization पर हैंडलिंग
मेरे परिदृश्य बारीकी से इस अतः से संबंधित है: Doubly Linked List to JSON
मैं निम्नलिखित JSON सेटिंग है:
_jsonSettings = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.Auto,
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
ObjectCreationHandling = ObjectCreationHandling.Auto
};
जब मैं धारावाहिक उत्पादन को देखो, यह सही प्रतीत होता है, और नोड्स के बीच संदर्भ ठीक से कर रहे हैं का प्रतिनिधित्व किया।
जब डेटा deserialised है, बाल वस्तुओं में अभिभावक गुण शून्य हैं, भले ही वे सही ढंग से $ ref के साथ आबादी वाले हैं।
नीचे JSON (पठनीयता के लिए छंटनी की) इस सवाल टाइपिंग की प्रक्रिया में
का एक नमूना है - मैं मुसीबत का स्रोत ...
"बच्चों में वस्तुओं देखा हो सकता है "सरणी संपत्ति में $ प्रकार विशेषता नहीं है।
यह हो सकता है क्योंकि बच्चे और माता पिता के गुण सामान्य प्रकार टी के हैं
ध्यान दें कि वास्तविक प्रकार धारावाहिक की जा रही TemplateDataLinkedListBase
public class TemplateDataQueryElement : TemplateDataLinkedListBase<TemplateDataQueryElement>
यहाँ की एक व्युत्पन्न वर्ग आधार का एक अंश है वर्ग:
public class TemplateDataLinkedListBase<T> where T : TemplateDataLinkedListBase<T>
{
[JsonProperty(TypeNameHandling = TypeNameHandling.Objects)]
public T Parent { get; set; }
[JsonProperty(TypeNameHandling=TypeNameHandling.Objects)]
public List<T> Children { get; set; }
}
मैं कैसे इस तरह से इस JSON deserialise सकते हैं कि जनक संपत्ति रिक्त नहीं है और एक संदर्भ th करने के लिए होता है ई पैरेंट ऑब्जेक्ट?
{
"$id": "9",
"$type": "Contracts.Models.TemplateDataQueryElement, Contracts",
"Query": null,
"Parent": null,
"Children": [
{
"$id": "11",
"Query": null,
"Parent": {
"$ref": "9"
},
"Children": [
{
"$id": "13",
"Query": null,
"Parent": {
"$ref": "11"
},
"Children": [],
"EntityName": "Widgets",
"Fields": [
"Id"
],
"Key": ""
},
यहाँ प्रासंगिक कोड को pastebin लिंक कर रहे हैं:
http://pastebin.com/i1jxVGG3 http://pastebin.com/T1xqEWW2 http://pastebin.com/ha42SeF7 http://pastebin.com/cezwZqx6 http://pastebin.com/uFbTbUZe http://pastebin.com/sRhNQgzh
क्या आप क्या कर रहे हैं पर बेहतर समझने के लिए पूरी कक्षा परिभाषा पोस्ट कर सकते हैं? –
और यह भी एक उदाहरण है कि आप धारावाहिकरण और deserialization कैसे कर रहे हैं? –
हाय @IlijaDimov मैंने स्रोत कोड – RobD