के साथ कई निर्माताओं के साथ कक्षाएं deserialize करने में असमर्थ रहा एक प्रकार है कि मैं कई निर्माताओं के साथ नियंत्रित नहीं करते हैं, यह एक के बराबर होती है: जब मैं इसे निजी deserialize करने के लिए, कोशिशJson.NET
public class MyClass
{
private readonly string _property;
private MyClass()
{
Console.WriteLine("We don't want this one to be called.");
}
public MyClass(string property)
{
_property = property;
}
public MyClass(object obj) : this(obj.ToString()) {}
public string Property
{
get { return _property; }
}
}
अब पैरामीटर रहित कन्स्ट्रक्टर कहा जाता है और संपत्ति कभी सेट नहीं होती है। परीक्षण:
We don't want this one to be called.
Expected: "test"
But was: null
मैं इसे कैसे ठीक कर सकते हैं, MyClass
की परिभाषा बदले बिना:
[Test]
public void MyClassSerializes()
{
MyClass expected = new MyClass("test");
string output = JsonConvert.SerializeObject(expected);
MyClass actual = JsonConvert.DeserializeObject<MyClass>(output);
Assert.AreEqual(expected.Property, actual.Property);
}
निम्नलिखित उत्पादन देता है? साथ ही, इस प्रकार की वस्तुओं की परिभाषा में एक महत्वपूर्ण गहराई है जिसे मुझे वास्तव में क्रमबद्ध करने की आवश्यकता है।
धन्यवाद, दुर्भाग्य से, जैसा कि मैंने प्रश्न में लिखा है, मैं कक्षा में परिवर्तन नहीं कर सकते हैं:
यहाँ बनाने एक
CustomJsonConverter
के लिए एक उपयोगी कड़ी है। – Grzenioतब मुझे लगता है कि आपको कस्टमजसन कनवर्टर बनाने की आवश्यकता है। यह कुछ नहीं है जो मैंने किया है मुझे डर है। –
यहां देखने का प्रयास करें: http://stackoverflow.com/a/8312048/234415 –