【发布时间】:2019-07-25 17:03:18
【问题描述】:
我有一个机器生成的类MyData,它有sbyte 成员。实际的类很长而且可读性不强,但这里是它的一个片段:
class MyData
{
private sbyte _MuxControl;
public sbyte MuxControl
{
get { return _MuxControl; }
set { __isset.MuxControl = true; this._MuxControl = value; }
}
}
对应的简化 JSON 如下所示:
[
{
"MuxControl": 0xAA
}
]
我正在尝试像这样反序列化:
var deserialized = JsonConvert.DeserializeObject<List<MyData>>(JsonStr);
某些值超出了sbyte 的范围,例如0xAA。结果,抛出异常。例如,当我将值更改为0x1 时,它可以工作。
我无法触摸MyData 的代码。它是机器生成的。是否有转换设置、覆盖或其他方式让这些值正确反序列化为sbyte?
【问题讨论】:
-
您能否分享您尝试反序列化的 JSON、
MyData的定义以及其中一个值超出范围时所需的处理方式? -
@BrianRogers 当然。正如我所写,
MyData是机器生成的,因此很长且不可读。我可以分享它的片段:private sbyte _MuxControl;public sbyte MuxControl { get { return _MuxControl; } set { __isset.MuxControl = true; this._MuxControl = value; } }Json 有东西"MuxControl": 0xAA,
标签: c# json reflection json.net jsonconverter