反序列化未命名数组



我很难编写适当的注释来表示从JSON Get请求返回的数据,该请求返回的数据如下:

[{"ProductCode":"0129923083091","Description":"DIESEL ","SalesLitres":6058.7347,"SalesValue":6416.2000},{"ProductCode":"0134039344902","Description":"UNLEADED ","SalesLitres":3489.8111,"SalesValue":3695.7100},
... 
]

(上面的省略号只是表示我可以返回这些项目的可变数量)

在我的模型类中(我使用MVVM方法用于Xamarin项目,但这在这里并不相关),我使用注释来表示模型属性

 namespace App8.Models
    {
        public class ReportRow
        {
            [JsonProperty("ProductCode")]
            public string ProductCode { get; set; } = string.Empty;
            [JsonProperty("Description")]
            public string Description { get; set; } = string.Empty;
            [JsonProperty("SalesLitres")]
            public double SalesLitres { get; set; } = 0.0;
            [JsonProperty("SalesValue")]
            public double SalesValue { get; set; } = 0.0;    
        }
    }

我想注释另一个显示容器/包含关系的类。但是,我遇到了麻烦,因为在注释中没有提供JSON属性来表示返回集合的"根"。

对于返回的JSON中命名的任何JSON数组,我都没有问题将JSON映射到对象模型。在这种情况下,我可以创建另一个类与一个命名的JSON属性,其中包含一个c#列表,但我试图提供一个适当的JSON模型映射,它返回一个未命名数组内的项目列表。

你知道我该怎么做吗?

要反序列化JSON,请使用:

JsonConvert.DeserializeObject<List<ReportRow>>(json)

(或任何您希望的变体),这里的关键是要求反序列化ReportRowICollection。它可以是您自己的类实现ICollection,或任何内置)

同样的想法也适用于JsonTextReader或任何其他反序列化JSON的方法。净了。只需使用ICollection<YourType>作为目标类型。

相关内容

  • 没有找到相关文章

最新更新