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



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

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

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

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

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

请参阅:使用 Newtonsoft JSON.NET 反序列化动态 JSON 字符串

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

相关内容

  • 没有找到相关文章

最新更新