【发布时间】:2017-04-18 20:18:16
【问题描述】:
JSON.NET 支持deserializing hexadecimal numbers(例如0xffff),但是序列化怎么样?
以下工作,但似乎过于复杂:
public sealed class HexJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(uint).Equals(objectType);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteRawValue($"0x{value:x}");
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanRead => false;
}
我正在寻找类似于DateFormatHandling 的东西,仅适用于整数。
【问题讨论】:
-
与
JsonTextWriter相比,Newtonsoft.Json 的JsonTextReader处理更多的幕后转换。 JSON 格式不支持十六进制,所以我会将值放在字符串中。否则你有什么工作。 -
这是我知道的最简单的方法。其他选择是继承
JsonTextWriter并覆盖JsonTextWriter.WriteValue(Int32)之类的方法。十六进制格式数字明显违反了JSON standard(与有no official JSON representation 的日期不同),这可能是未内置十六进制格式输出的原因。