gpt4 book ai didi

c# - 反序列化一个未命名的数组

转载 作者:太空狗 更新时间:2023-10-29 23:20:43 25 4
gpt4 key购买 nike

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

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

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

在我的模型类中(我正在为 Xamarin 项目使用 MVVM 方法,但这并不过分)我正在使用注释来表示模型属性

 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)

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

同样的想法遵循JsonTextReader或任何其他反序列化 JSON.NET 提供的方法。只需使用 ICollection<YourType>作为目标类型。

关于c# - 反序列化一个未命名的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39816903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com