使用Json.NET将JSON字符串反序列化为Object C#

时间:2016-12-11 08:29:36

标签: c# json serialization json.net

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

object myObject = JsonConvert.DeserializeObject("{\'Id\':\'1\'}");

myObject的类型属于JObject类型,我无法使用反射访问其属性。

有没有办法使用Json.net或任何其他JSON反序列化器?

2 个答案:

答案 0 :(得分:2)

我认为你可以将对象反序列化为Dictionary<string,string>expandoobject(也可以转换为IDictionary<string,object>)然后你不需要使用反射来获取属性,你可以通过字典获取它们。

请参阅:Deserialize Dynamic Json string using Newtonsoft JSON.NET

答案 1 :(得分:1)

这不允许您使用反射本身,但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);
        }