gpt4 book ai didi

c# - 当 Web 服务发送 bool 但接收到 int 时如何序列化/反序列化

转载 作者:行者123 更新时间:2023-11-30 20:33:01 25 4
gpt4 key购买 nike

目前正在使用最烦人的网络服务!我正在使用 Newtonsoft Json.Net。

当我请求数据时, bool 属性 EndOfDay 被发送为 truefalse - 反序列化工作正常但很烦人,当我发送数据时到网络服务,对于同一个字段,我必须发送 0 或 1 - 不要问为什么,因为我不能给你一个好的答案 - 我所知道的是我不能改变它。

有没有一种方法可以将 bool 序列化为 0 或 1,即使当我反序列化时字符串将是 true/false,或者我应该承认失败并拥有除了这个属性之外几乎相同的单独对象 - 一个对象有一个 bool另一个是整数?

最佳答案

一种方法是使用自定义转换器:

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);
}
}
}

测试

var test = JsonConvert.DeserializeObject<Test>("{\"EndOfDay\":\"true\"}");
var back = JsonConvert.SerializeObject(test); // {"EndOfDay": "1"}

关于c# - 当 Web 服务发送 bool 但接收到 int 时如何序列化/反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40724519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com