【问题标题】:How to get the type of deserialized C# object from JSON text?如何从 JSON 文本中获取反序列化 C# 对象的类型?
【发布时间】:2011-07-31 19:51:13
【问题描述】:

我试图在 JSON 文本(JSON 文本中的 $type)中获取序列化 C# 对象的类型,而无需再次将 JSON 文本反序列化为对象。你能建议我有什么选择吗?

我正在使用 Newtonsoft 库进行序列化和序列化。

提前致谢

【问题讨论】:

    标签: c# .net json wcf json.net


    【解决方案1】:

    我不使用 Newtonsoft 库。但是,假设 $type 位于文件的开头或结尾,我可能会使用字符串函数(下面的伪代码),这会非常快。

    • 查找 $type

    • i=查找下一个冒号

    • j=查找下一个逗号

    • 在 i 和 j 之间抓取令牌

    • 修剪那个标记

    • 对令牌做一些有用的事情。用反射制作一个类型?

    听起来怎么样?当您使用它时,您可以编写一个扩展方法。多次点击 +1,我会考虑编写代码 ;-)

    【讨论】:

    • 感谢您的想法。我使用 Newtonsoft libaray 解决了它并在上面发布了答案。
    【解决方案2】:

    使用 Newtonsoft 库相当简单。

    JObject json = JObject.Parse(JsonText);
    string type = json["$type"].ToString();
    

    【讨论】:

    • 以为您想在不将文本再次解析回对象的情况下实现这一目标?因此获得令牌的想法。如果性能对您来说是个问题,我发布的解决方案将为您提供更好的服务。也许您发现它在事物的计划中并不重要,这通常是这种情况。
    【解决方案3】:

    试试这个

     var jsonObj = JObject.Parse("your json string");
     var props = jsonObj.Properties();
    
     foreach (var prop in props)
     {
         Console.WriteLine(prop.Value.Type);
     }
    

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多