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

时间:2018-07-06 00:05:02

标签: json.net

寻找一个语法示例,该示例将JsonArrayAttribute与c#类一起使用或用作JSON反序列化属性。

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

这是我真正的问题... 。您无法在Google上搜索“ JsonArrayAttribute”一词,因为它位于非常常见的错误消息中。这个单词出现在163个帖子中的堆栈溢出中。这些帖子中的前60个都是关于显式列表反序列化以及该错误的字面意思是“ JsonArrayAttribute”的错误。解决方案是通过列表消除错误,而不是如何使用“ JsonArrayAttribute”

就像我在寻找90%解决方案的对立面一样。我实际上想将C#类中的“ JsonArrayAttribute”属性用作装饰,或者我想将其用作JsonSerializerSettings定义中的属性。
我尚未看到使用此属性或称为“ JsonArrayAttribute”的属性的Json.Net示例。

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

1 个答案:

答案 0 :(得分:1)

根据我的理解,用法本身实际上非常简单。假设您实现了自己的类似列表的类型,由于某种原因它没有继承自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)

更多阅读内容: