में डिफॉल्ट प्राइमेटिव टाइप हैंडलिंग ओवरराइड करना क्या प्राचीन प्रकारों को संभालने पर Json.net के डिफ़ॉल्ट deserialization व्यवहार को ओवरराइड करने का कोई तरीका है? उदाहरण के लिए जब object[]
3.14 का एक प्रकार के लिए json सरणी [3.14,10,"test"]
deserializing प्रकार double
का हो जाएगा और प्रकार long
का हो जाएगा। क्या वैसे भी मैं इस प्रकार के फैसले को रोक या ओवरराइड कर सकता हूं ताकि मैं मूल्यों को decimal
और int
क्रमशः deserialize कर सकता हूं?Json.Net
मैं मूल रूप से हमेशा जेसन पूर्णांक को int
के रूप में वापस लौटना चाहता हूं और decimal
के रूप में वापस लौटने के लिए तैरता हूं। यह मुझे मेरे कोड में double
से decimal
रूपांतरण इंजेक्ट करने के लिए कुछ बचाएगा।
मैंने Newtonsoft.Json.Serialization.DefaultContractResolver
को विस्तारित करने और अपने Newtonsoft.Json.JsonConverter
को लागू करने में देखा है, लेकिन मुझे इस वांछित ओवरराइड को लागू करने के किसी भी तरीके की खोज नहीं हुई है।
उदाहरण कोड पुन: पेश करने
object[] variousTypes = new object[] {3.14m, 10, "test"};
string jsonString = JsonConvert.SerializeObject(variousTypes);
object[] asObjectArray = JsonConvert.DeserializeObject<object[]>(jsonString); // Contains object {double}, object {long}, object {string}
JsonTextReader.SetToken json.net 4.5.1 के अपने रिलीज में आभासी के रूप में चिह्नित नहीं है, इसलिए ओवरराइड एक 'ओवरराइड के लिए कोई उपयुक्त विधि' फेंक रहा है। क्या मैं कुछ भूल रहा हूँ? –
@MatthewRuston मेरा वर्तमान Json.Net संस्करण '4.0.5' है। –
ऐसा लगता है कि उन्होंने हालिया रिलीज में वर्चुअल प्रॉपर्टी को हटा दिया है। अजीब। –