[C#] आप Json.net का उपयोग करते हुए सिर्फ एक फ़ील्ड के जेसन सीरियलाइज़ेशन को कैसे संशोधित करते हैं?


Answers

यदि आपके पास कक्षा तक पहुंच है (और आप इसे हमेशा उसी तरह क्रमबद्ध करने की आवश्यकता है) तो आप कक्षा को अपनी आवश्यकताओं के अनुसार संशोधित कर सकते हैं। मान लीजिए। यह वर्ग है:

public class MyClass
{
    public string Value4 {get; set;}
}

यदि आप चाहते हैं कि मूल्य 4 को एक पूर्णांक के रूप में सीरियल किया जाए तो आप यह कर सकते हैं:

public class MyClass
{
    [JsonIgnore()]
    public string Value4 {get; set;}

    public int Value4AsInt
    {
        return Convert.ToInt32(Value4);
    }
}
Question

उदाहरण के लिए कहो कि मैं एक वस्तु को जेसन से 10 क्षेत्रों में कनवर्ट करने की कोशिश कर रहा हूं, हालांकि मुझे इन क्षेत्रों में से 1 को क्रमबद्ध करने की प्रक्रिया को संशोधित करने की आवश्यकता है। फिलहाल, मुझे मैन्युअल रूप से प्रत्येक संपत्ति को इस तरह से लिखना होगा:

 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteStartObject();

        writer.WritePropertyName("Field1");
        serializer.Serialize(writer, value.Field1);

        writer.WritePropertyName("Field2");
        serializer.Serialize(writer, value.Field2);

        writer.WritePropertyName("Field3");
        serializer.Serialize(writer, value.Field3);

        writer.WritePropertyName("Field4");
        serializer.Serialize(writer, Convert.ToInt32(value.Field4)); //Modifying one field here

        //Six more times

        writer.WriteEndObject();
    }

यह अच्छा कोड नहीं है, और लिखने के लिए यह वास्तव में परेशान है। क्या Json.net को एक ही संपत्ति को स्वचालित रूप से क्रमबद्ध करने के लिए कोई तरीका है? या संभवत: एक जॉबिक को स्वचालित रूप से उत्पन्न और संशोधित कर सकता है?