我试图从一个JSON文件中解析(解析)一些Dictionary<UInt32, string>
。如果UInt32
被指定为decimal,则可以完美工作。但是,如果我指定十六进制值,将失败:(我需要以两种方式指定我的数字。
我被困在类型转换,任何提示?
提前感谢,
JSON测试
"TEST_DIC": {
"0": "NONE",
"40": "Value_40",
"0x83": "Value_0x83", <-- this will fail
}
现在在C#中,我的对象很简单
使用System.Text.Json;<--使用标准的Microsoft JSON库,使用System.Text.Json.Serialization;
public class Cfg
{
[JsonConverter(typeof(HexConverter))] <-- tried this converter
public Dictionary<UInt32, string> TEST_DIC{ get; set; }
}
我尝试创建一个像这样的自定义TypeConverter
public class HexConverter : JsonConverter<Dictionary<UInt32, string>>
{
public override Dictionary<UInt32, string> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var value = reader.GetString();
return null;
}
public override void Write(Utf8JsonWriter writer, Dictionary<uint, string> value, JsonSerializerOptions options)
{
throw new NotImplementedException();
}
}
1条答案
按热度按时间yc0p9oo01#
基于@ ZdenykJelínek的建议,以下是我的实现。欢迎评论/改进。
public class Uncategorized:JsonConverter<字典<UInt 32,string>> {
}
成员应装饰有: