C# Json.NET don';t序列化特定属性
我有下一个问题:C# Json.NET don';t序列化特定属性,c#,json,json.net,C#,Json,Json.net,我有下一个问题: "mode":"modeValue", "format":"formatValue", "options":{ "page":1, "size":"70", "resize":"false", "templating":null } 但“选项”值对象可以不同于当前,我可以有许多不同的选项。例如,它可以是 "options": { "page": 2, "first": "true", "parent": null }
"mode":"modeValue",
"format":"formatValue",
"options":{
"page":1,
"size":"70",
"resize":"false",
"templating":null
}
但“选项”值对象可以不同于当前,我可以有许多不同的选项。例如,它可以是
"options": {
"page": 2,
"first": "true",
"parent": null
}
我创建了一个类
public class Settings
{
[JsonProperty(PropertyName = "mode")]
public string Mode { get; set; }
[JsonProperty(PropertyName = "format")]
public string OutputFormat { get; set; }
[JsonProperty(PropertyName = "options")]
public string Options { get; set; }
}
我不想反序列化“options”值,而是在options
属性中将其设置为字符串(序列化)
注意:我将仅将此类用于反序列化
谢谢大家! 您可以通过使用
OnDeserialized
属性来实现这一点。下面是一个例子:
public class Settings
{
[JsonProperty(PropertyName = "mode")]
public string Mode { get; set; }
[JsonProperty(PropertyName = "format")]
public string OutputFormat { get; set; }
[JsonIgnoreAttribute]
public string Options { get; private set; }
[JsonProperty(PropertyName = "options")]
private object Temp { get; set; }
[OnDeserialized]
private void OnDeserialized(StreamingContext ctx)
{
Options = Temp?.ToString();
}
}
“选项”反序列化为“Temp”属性,然后“选项”由
Temp.ToString()
填充。您可以使用OnDeserialized
属性来实现这一点。下面是一个例子:
public class Settings
{
[JsonProperty(PropertyName = "mode")]
public string Mode { get; set; }
[JsonProperty(PropertyName = "format")]
public string OutputFormat { get; set; }
[JsonIgnoreAttribute]
public string Options { get; private set; }
[JsonProperty(PropertyName = "options")]
private object Temp { get; set; }
[OnDeserialized]
private void OnDeserialized(StreamingContext ctx)
{
Options = Temp?.ToString();
}
}
“选项”反序列化为“Temp”属性,然后“选项”由
Temp.ToString()填充谢谢!这是我的工作,所以我会将其标记为“解决方案”。你能告诉我Options=Temp?.ToString()中Temp
之后的?
是什么吗代码>?Temp?.ToString()是写入Temp!=无效的temp.ToString():null@Pepo-Viezevingertjes是对的。为了安全起见,我添加了这个选项(如果“options”在json中为null或未定义),谢谢!这是我的工作,所以我会将其标记为“解决方案”。你能告诉我Options=Temp?.ToString()中Temp
之后的?
是什么吗代码>?Temp?.ToString()是写入Temp!=无效的temp.ToString():null@Pepo-Viezevingertjes是对的。为了安全起见,我添加了这个选项(以防“options”在json中为null或未定义)