代码之家  ›  专栏  ›  技术社区  ›  Sql Surfer

jsonarrayattribute在C代码中的用法(json.net)

  •  1
  • Sql Surfer  · 技术社区  · 7 年前

    寻找使用jsonarrayattribute和c类或json反序列化属性的语法示例。

    我想删除当前代码中的显式列表,并查看jsonarrayattribute在实际代码中的实际工作方式。

    这是我真正的问题… 您不能用google搜索单词jsonarrayattribute,因为它包含在一个非常常见的错误消息中。这个词出现在163个帖子的堆栈溢出上。前60篇文章都是关于显式列表反序列化以及错误中字面上有“jsonarrayattribute”一词的错误。解决方案是用一个列表来消除错误,而不是如何使用jsonarrayattribute。

    就好像我在寻找与90%溶液相反的溶液。实际上,我想将C类中的jsonarrayattribute属性用作装饰,或者将其用作jsonserializersettings定义中的属性。
    我还没有看到json.net使用名为“jsonarrayattribute”的属性的例子。

    我知道jsonarrayattribute将为我做什么——这正是我所处的测试环境所需要的。我正在寻找语法或应用程序点,以使newtonsoft运行时看到“jsonarrayattribute”。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Marc.2377    7 年前

    据我所知,这个用法其实很简单。假设您实现了自己的类列表类型,但由于某种原因,该类型不是从 List<T> 和/或不实现 IEnumerable ,但仍然在内部管理与json匹配的类型的集合。在这种情况下,您只需指定 [JsonArray] 在类型名称之前,如下所示:

    public class JsonObj
    {
        // properties
    }
    
    [JsonArray]
    public class JsonObjCollection
    {
        // implementation of a list of type JsonObj
    }
    

    那你就可以了 JsonConvert.DeserializeObject<JsonObjCollection>(jsonStr) 而不是我。 JsonConvert.DeserializeObject<IEnumerable<JsonObj>>(jsonStr) 是的。

    更多阅读: