【发布时间】:2016-11-28 17:18:47
【问题描述】:
我有以下 JSON
{
"PROPERTY1": "vvv",
"PROPERTY2": "aa",
}
我想用以下数据模型类反序列化
public class Class1
{
public Class1()
{
}
[JsonProperty(Required = Required.Always)]
public string PROPERTY1{ get; set; }
[JsonProperty(Required = Required.Always)]
public string PROPERTY2{ get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public decimal PROPERTY3 { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string PROPERTY4 { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public SomeObject PROPERTY5 { get; set; }
}
并使用以下序列化代码
deserializedResponse = JsonConvert.DeserializeObject<Class1>(response);
因此,我希望收到带有 PROPERTY1 和 PROPERTY2 的 Class1, 实际上我得到了所有 4 个属性,而 PROPERTY3 为 0,PROPERTY4 = null,PROPERTY5 = ""。
尝试将序列化设置作为 2 个参数传递
JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
没有帮助。
如果 JSON 中不存在,我想要没有 PROPERTY3 和 PROPERTY4 和 PROPERTY5 的 Class1 对象
有什么建议吗?
【问题讨论】:
-
有什么问题?当然,您仍将拥有它们属于类的那些属性。他们只会有他们的默认值(因此
null和0)。 null 处理用于序列化,写出时将被忽略。如果您想要动态类型,请使用dynamic而不是具体类。 -
另外,您的 JSON 无效。应该是 { "PROPERTY1":"vvv", "PROPERTY2":"aa" }
-
@Lloyd Typo :-) 如果 JSON 中不存在,我想要没有 PROPERTY3 和 PROPERTY4 的 Class1 对象
-
@AlexanderGorelik 然后尝试
dynamic,因为您无法从临时课程中删除属性-stackoverflow.com/questions/4535840/… -
@AlexanderGorelik 你不可能是其中一个,我害怕。