寻找使用 JsonArrayAttribute 和 ac# 类或作为 JSON 反序列化属性的语法示例。
我想删除当前代码中的显式 List 并查看 JsonArrayAttribute 在实际代码中的实际工作方式。
这是我真正的问题......你不能用谷歌搜索“JsonArrayAttribute”这个词,因为它包含在一个非常常见的错误消息中。这个词出现在 163 个帖子的堆栈溢出中。这些帖子中的前 60 篇都是关于显式列表反序列化和错误中字面上包含“JsonArrayAttribute”一词的错误。解决方案是用 List 来消除错误——而不是如何使用“JsonArrayAttribute”
这就像我在寻找 90% 解决方案的反面。我实际上想在 C# 类中使用“JsonArrayAttribute”属性作为装饰,或者我想将它用作 JsonSerializerSettings 定义中的属性。
我还没有看到使用这个名为“JsonArrayAttribute”的属性或属性的 Json.Net 示例。
我了解 JsonArrayAttribute 将为我做什么——这正是我所处的测试工具情况所需要的。我正在寻找语法或应用程序点来让 Newtonsoft 运行时看到“JsonArrayAtribute”。
据我了解,用法本身其实很简单。假设您实现了自己的类似列表的类型,由于某种原因,该类型不继承和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)。
更多阅读:
属性 (C#) (Microsoft 文档)
序列化属性和JsonArrayAttribute 类(Json.NET 文档)
| 归档时间: |
|
| 查看次数: |
7234 次 |
| 最近记录: |