C# 当一个属性可以是两种不同的类型时,构建一个类来反序列化json

C# 当一个属性可以是两种不同的类型时,构建一个类来反序列化json,c#,json,parsing,json.net,C#,Json,Parsing,Json.net,我有一些Json,我想解析成一个c#对象,它可以像这样通过: { “SomeObject”:{ “名字”:“某物”, “生日月”:“五月” } } 或者像这样: { “SomeObject”:{ “名字”:“某物”, “生日月”:5 } } 是否有一种方法可以为SomeObject类建模,使birthMonth属性可以是字符串或整数?是。您可以使用dynamic关键字 public class SomeObject { public string name {get;set;}

我有一些Json,我想解析成一个c#对象,它可以像这样通过:

{
“SomeObject”:{
“名字”:“某物”,
“生日月”:“五月”
}
}

或者像这样:


{
“SomeObject”:{
“名字”:“某物”,
“生日月”:5
}
}


是否有一种方法可以为SomeObject类建模,使birthMonth属性可以是字符串或整数?

是。您可以使用
dynamic
关键字

public class SomeObject {
    public string name {get;set;}
    public dynamic birthMonth {get;set;}
}
但更好的方法可能是使用一些json(依赖于框架)技术将
may
值转换为5。例如,在
newtonsoft.json
中,有一个变体是使用您自己的
JsonConverter
实现

以下是一个例子:

它想成为字符串,就让它成为字符串吧。