2012-10-15 12 views
5

हम वर्तमान में निम्न कन्स्ट्रक्टर का उपयोग कर रहे हैं।सेटिंग्स और कनवर्टर पैरामीटर के साथ कोई Json.net कन्स्ट्रक्टर

var text = JsonConvert.SerializeObject(message, new IsoDateTimeConverter()); 

हमें जिस समस्या का सामना करना पड़ रहा है वह यह है कि जेसन को कभी-कभी एक अलग क्रम में क्रमबद्ध किया जाता है। इससे हमारे परीक्षणों और हैश चेक के साथ एक समस्या होती है। मैं एक उदाहरण है कि ग्राहक सेटिंग्स का उपयोग गुण आदेश कर सकते हैं पाया

public class OrderedContractResolver : DefaultContractResolver 
{ 
    protected override System.Collections.Generic.IList<JsonProperty> CreateProperties(System.Type type, MemberSerialization memberSerialization) 
    { 
     return base.CreateProperties(type, memberSerialization).OrderBy(p => p.PropertyName).ToList(); 
    } 
} 

आप सामान्य रूप से एक JsonSerializationSettings वस्तु आरंभ करके इस का उपयोग करें और निर्माता में ऐसा

var settings = new JsonSerializerSettings() 
{ 
    ContractResolver = new OrderedContractResolver() 
}; 

var json = JsonConvert.SerializeObject(obj, Formatting.Indented, settings); 

से होकर गुजरेगा इस के साथ समस्या यह मैं कर सकता है कनवर्टर और सेटिंग्स पैरामीटर का उपयोग करने वाले कन्स्ट्रक्टर के लिए ओवरलोड लोड नहीं होता है, कोई विचार है कि मैं दोनों का उपयोग कैसे कर सकता हूं?

उत्तर

10

पाया गया, सेटिंग ऑब्जेक्ट पर कनवर्टर्स प्रॉपर्टी है।

var settings = new JsonSerializerSettings() 
{ 
    ContractResolver = new OrderedContractResolver() 
}; 
settings.Converters.Add(new IsoDateTimeConverter()); 

var text = JsonConvert.SerializeObject(message, Formatting.Indented, settings); 
+0

इसे स्वीकार करने के रूप में चिह्नित करें, इससे मुझे भी मदद मिली :) –

संबंधित मुद्दे