我想将我不知道其Type的JSON字符串反序列化为Object
类型的对象,并且能够使用反射访问其属性。
当我用这个
object myObject = JsonConvert.DeserializeObject("{\'Id\':\'1\'}");
myObject
的类型属于JObject
类型,我无法使用反射访问其属性。
有没有办法使用Json.net或任何其他JSON反序列化器?
答案 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);
}