目前正在使用最烦人的网络服务!我正在使用Newtonsoft Json.Net。
当我请求数据时,bool属性EndOfDay
将作为true
或false
发送 - 反序列化工作正常但令人烦恼的是,当我向Web服务发送数据时,对于同一字段我必须发送0或1 - 不要问为什么我不能给你一个好的答案 - 我所知道的是我无法改变它。
有没有办法将bool序列化为0或1,即使我反序列化字符串将是真/假或我应该承认失败并且具有几乎相同的单独对象,除了这一个属性 - 一个对象有一个bool另一个是int?
答案 0 :(得分:4)
一种方法是使用自定义对流器:
c = new c(url,port,username:password);
测试
class Test {
[JsonConverter(typeof(StrangeBoolConverter))]
public bool EndOfDay { get; set; }
private class StrangeBoolConverter : JsonConverter {
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
// write it as 1 or 0
writer.WriteValue((bool) value ? 1 : 0);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
// but when reading - expect "true" or "false"
return Convert.ToBoolean(reader.Value);
}
public override bool CanConvert(Type objectType) {
return objectType == typeof(bool);
}
}
}