我需要接受一个json字符串,其中包含类型为uint32 [](长度为2)的字段为long。
要序列化的类:
public class ChainHeightDTO
{
[JsonProperty("height")]
public uint[] Height { get; set; }
}
我需要什么:
public class ChainHeightDTO
{
[JsonProperty("height")]
[JsonConverter(typeof(TypeConversionClass))]
public long Height { get; set; }
}
我已经看到了这个答案:https://stackoverflow.com/a/4093750/8099383看起来像我需要但我需要包含一个自定义函数来从uint32 []转换为long(我认为?),它似乎与接口有关而不是原生类型。
如果它有所不同,则长度由uint32 [0] = lower& uint32 [1] =更高。
答案 0 :(得分:1)
您可以告诉json将height
反序列化为原始类型(uint[]
),但向用户公开另一个long
类型的属性。像(未经测试,但应该提出一个想法):
public class ChainHeightDTO
{
[JsonProperty("height")]
private uint[] _height
{
get { return new uint[] { Height % 256, Height / 256 }; }
set { Height = value[0] + value[1] * 256; }
}
[JsonIgnore]
public long Height { get; set; }
}
注意:_height
为private
,Height
被json标记为忽略。