【发布时间】:2017-06-02 16:01:42
【问题描述】:
我将以下 JSON 发送到 MVC 控制器:
{
"CId": 374,
"CultureId": 1,
"VGS": null,
"DisplayOrder": 1
}
我正在使用 JSON.Net 将其转换为动态对象,然后将属性分配给实体:
public partial class FooEntity
{
public short DisplayOrder { get; set; }
public Nullable<short> VGS { get; set; }
public short CId { get; set; }
public short CultureId { get; set; }
}
请注意,我们分配到的 VGS 属性是一个可以为空的short,但是在尝试创建实体的新实例并分配值时,尝试分配 VGS 时出现错误:
dynamic data = JsonConvert.DeserializeObject(payload);
var foo = new FooEntity();
foo.CId = data.CId;
foo.CultureId = data.CultureId;
foo.VGS = data.VGS; // Errors here
foo.DisplayOrder = data.DisplayOrder;
在 mscorlib.dll 中出现“System.FormatException”类型的异常,但未在用户代码中处理
附加信息:输入字符串的格式不正确。
据我所知,json 反序列化为 null 值是正确的,并且由于我分配了一个可为 null 的值,我不确定是什么导致了错误?
【问题讨论】:
-
也许
VGS被反序列化为object,这就是为什么你不能将它分配给Nullable<sort> -
JsonConvert.DeserializeObject
(payload);你能用泛型试试吗? -
另外,你应该更喜欢
short?而不是Nullable<short>
标签: c# json dynamic json.net nullable