寻找一个语法示例,该示例将JsonArrayAttribute与c#类一起使用或用作JSON反序列化属性。
我想在当前代码中删除一个显式列表,并查看JsonArrayAttribute在实际代码中的实际工作方式。
这是我真正的问题... 。您无法在Google上搜索“ JsonArrayAttribute”一词,因为它位于非常常见的错误消息中。这个单词出现在163个帖子中的堆栈溢出中。这些帖子中的前60个都是关于显式列表反序列化以及该错误的字面意思是“ JsonArrayAttribute”的错误。解决方案是通过列表消除错误,而不是如何使用“ JsonArrayAttribute”
就像我在寻找90%解决方案的对立面一样。我实际上想将C#类中的“ JsonArrayAttribute”属性用作装饰,或者我想将其用作JsonSerializerSettings定义中的属性。
我尚未看到使用此属性或称为“ JsonArrayAttribute”的属性的Json.Net示例。
我了解JsonArrayAttribute将为我做什么–正是我所需要的测试工具。我正在寻找语法或应用程序点以使Newtonsoft运行时看到“ JsonArrayAtribute”。
答案 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)
。
更多阅读内容:
Attributes (C#)(Microsoft文档)
Serialization Attributes和JsonArrayAttribute Class(Json.NET文档)