【发布时间】:2016-04-12 07:13:21
【问题描述】:
当我们有多个不同情况的属性名称时,我想了解 Json.NET 如何将 JSON 对象反序列化为对应的 c# 对象(我知道这不是一个好习惯,但只是想知道 JSON.NET 如何处理这个问题)。
我有一个定义如下的 c# 对象:
public class TestModel
{
public string Name { get; set; }
public bool IsEmployee { get; set; }
}
和json对象一样
{ "Name": "TestName","Isemployee":true, "isemployee":false};
那么,如果我使用 JSON.NET de-serialize 方法将上面的 json 字符串转换为 TestModel 对象,这两个属性中的哪一个将分配给IsEmployee 变量?为什么?
谢谢。
【问题讨论】:
-
Isemployee 和 isemployee 不是什么 IsEmployee 一样,所以 IsEmployee 会是 false,因为它是默认的 bool 值
-
不,如果我将 isemploye 设为 true,则解析为 true。
-
根据this 非常古老的“发行说明”,如果完全匹配失败,Json.NET 会尝试不区分大小写的匹配。不确定此功能是否可配置甚至仍然有效,但从您所描述的情况来看,它似乎是。尝试改变
Isemployee和isemployee的顺序,看看是否对应用的IsEmployee值有影响。我的猜测是最后一个元素优先。 -
您好,如果我更改订单,它会取最后一个属性的值。
-
好的。我冒昧地在答案中对此进行了总结,请参见下文。
标签: c# json json.net deserialization