【问题标题】:Deserialize JSON string to Object C# using Json.NET使用 Json.NET 将 JSON 字符串反序列化为 Object C#
【发布时间】:2016-12-11 18:05:15
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c# json serialization json.net


【解决方案1】:

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

见:Deserialize Dynamic Json string using Newtonsoft JSON.NET

【讨论】:

  • {"Id":"1"} 只是一个示例。属性可以是任何类型,可以是新对象
  • 那你最好使用动态的我会说
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多