2013-01-20 18 views
34

मैं एक bool क्षेत्र के लिए एक वेब सेवा और दिए गए डेटा के साथ बोल रहा हूँ bool करने के लिए एक पूर्णांक कन्वर्ट या तो 0 या 1 लेकिन अपने मॉडल के साथ मैं एक System.BoolJson.Net

Json.Net के साथ है का उपयोग कर रहा मेरे मॉडल के लिए 0/1 को एक बूल में डालना संभव है? टाइप करने के लिए 'System.Boolean'

किसी भी मदद की भयानक होगा त्रुटि परिवर्तित मूल्य "0" !!:

वर्तमान में मैं एक त्रुटि हो रही है

Newtonsoft.Json.JsonSerializationException

उत्तर

84

एक कनवर्टर

public class BoolConverter : JsonConverter 
{ 
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    { 
     writer.WriteValue(((bool)value) ? 1 : 0); 
    } 

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    { 
     return reader.Value.ToString() == "1"; 
    } 

    public override bool CanConvert(Type objectType) 
    { 
     return objectType == typeof(bool); 
    } 
} 

तब मेरे मॉडल के भीतर

[JsonConverter(typeof(BoolConverter))] 
    public bool active { get; set; } 

आशा है कि यह मदद करता है किसी और

+1

स्थिति के आधार पर बना दी, आप भी '' bool में आवश्यकता हो सकती है? ' CanConvert' –

+0

और क्या यह संभवतः सभी कस्टम ऑब्जेक्ट्स में सभी कस्टम ऑब्जेक्ट्स को इस कस्टम कनवर्टर को जेसन कनवर्टर विशेषताओं को जोड़ने के बिना लागू करने का एक तरीका है? – Grengas