使用JSON.NET将JSON字符串反序列化到对象C#

使用JSON.NET将JSON字符串反序列化到对象C#,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我想将不知道其类型的JSON字符串反序列化为object类型的对象,并能够使用反射访问其属性。 我用这个的时候 object myObject = JsonConvert.DeserializeObject("{\'Id\':\'1\'}"); myObject的类型是JObject类型,我无法使用反射访问其属性 有没有办法使用Json.net或任何其他Json反序列化程序来实现这一点?我认为您可以将对象反序列化到字典或expandoobject(也可以转换为IDictionary)中,然后您

我想将不知道其类型的JSON字符串反序列化为
object
类型的对象,并能够使用反射访问其属性。 我用这个的时候

object myObject = JsonConvert.DeserializeObject("{\'Id\':\'1\'}");
myObject
的类型是
JObject
类型,我无法使用反射访问其属性


有没有办法使用Json.net或任何其他Json反序列化程序来实现这一点?

我认为您可以将对象反序列化到
字典或
expandoobject
(也可以转换为
IDictionary
)中,然后您不需要使用反射来获取属性,您可以通过字典获取它们


请参阅:

这不允许您使用反射本身,但ExpandoObject允许您迭代属性:

        string json = "{\'Id\':\'1\'}";
        var converter = new ExpandoObjectConverter();
        dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json, converter);

        IDictionary<string, object> dict = (IDictionary<string, object>)obj;
        foreach (string key in dict.Keys)
        {
            Console.WriteLine(key);
        }
string json=“{'Id\':\'1\'”;
var converter=新的ExpandoObjectConverter();
dynamic obj=JsonConvert.DeserializeObject(json,converter);
IDictionary dict=(IDictionary)obj;
foreach(dict.Keys中的字符串键)
{
控制台。写入线(键);
}

这看起来像是这个的复制品:或者JSON.NET的复制品:@scotru我也尝试过动态。我的观点是,我需要使用反射来访问它的属性。生成的动态对象也是Jobject类型。您的问题应该在以下链接下回答:@AndreasM。我也尝试过动态。我的观点是,我需要使用反射来访问它的属性。生成的动态对象也是JObject{“Id”类型:“1”}只是一个示例。属性可以是任何类型,也可以是新对象,那么我认为最好使用dynamic