C# 代码中的 JsonArrayAttrribute 用法 (Json.Net)

Sql*_*fer 5 json.net

寻找使用 JsonArrayAttribute 和 ac# 类或作为 JSON 反序列化属性的语法示例。

我想删除当前代码中的显式 List 并查看 JsonArrayAttribute 在实际代码中的实际工作方式。

这是我真正的问题......你不能用谷歌搜索“JsonArrayAttribute”这个词,因为它包含在一个非常常见的错误消息中。这个词出现在 163 个帖子的堆栈溢出中。这些帖子中的前 60 篇都是关于显式列表反序列化和错误中字面上包含“JsonArrayAttribute”一词的错误。解决方案是用 List 来消除错误——而不是如何使用“JsonArrayAttribute”

这就像我在寻找 90% 解决方案的反面。我实际上想在 C# 类中使用“JsonArrayAttribute”属性作为装饰,或者我想将它用作 JsonSerializerSettings 定义中的属性。
我还没有看到使用这个名为“JsonArrayAttribute”的属性或属性的 Json.Net 示例。

我了解 JsonArrayAttribute 将为我做什么——这正是我所处的测试工具情况所需要的。我正在寻找语法或应用程序点来让 Newtonsoft 运行时看到“JsonArrayAtribute”。

Mar*_*377 4

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

public class JsonObj
{
    // properties
}

[JsonArray]
public class JsonObjCollection
{
    // implementation of a list of type JsonObj
}
Run Code Online (Sandbox Code Playgroud)

然后你可以做JsonConvert.DeserializeObject<JsonObjCollection>(jsonStr)而不是 ie JsonConvert.DeserializeObject<IEnumerable<JsonObj>>(jsonStr)

更多阅读: