gpt4 book ai didi

json.net - 将 JArray 复制到 ObservableCollection 时遇到问题

转载 作者:行者123 更新时间:2023-12-02 22:02:57 25 4
gpt4 key购买 nike

所以我觉得我已经很接近了,只是缺少一点胶水来让魔法发挥作用。

考虑一个代码类:

public class Transaction
{
[JsonProperty(PropertyName = "date")]
public DateTime Date { get; set; }

[JsonProperty(PropertyName = "payee")]
public string Payee { get; set; }

[JsonProperty(PropertyName = "amount")]
public double Amount { get; set; }

[JsonProperty(PropertyName = "category")]
public string Category { get; set; }
}

private ObservableCollection<Transaction> items;
private JArray result;

以及来自 App.MobileService.InvokeApiAsync 的 JSON 响应

[
{
"date": "2014-09-26T00:00:00Z",
"payee": "Expensive Restaurant",
"amount": -199,
"category": "Dining",
}
]

我已验证返回的 JArray 对象是否已正确解析和填充。我想将数据放入 ObservableCollection 中。

我尝试过各种咒语,最简单的是:

items = result;

哪些错误

Cannot implicitly convert type 'Newtonsoft.Json.Linq.JArray' to 'System.Collections.ObjectModel.ObservableCollection<Transaction>'

或者:

items = new ObservableCollection<Transaction> (result);

其中错误:

Argument 1: cannot convert from 'Newtonsoft.Json.Linq.JArray' to 'System.Collections.Generic.IEnumerable<Transaction>'

我已经阅读了大量示例,这些示例看起来应该非常简单,所以我确信我错过了一些简单的东西。任何帮助表示赞赏。

更新:

这达到了我想要的效果,但似乎我违背了 JSON.NET 类的一些内置反序列化功能的目的:

            foreach (JObject jObject in result)
{
Transaction trans = new Transaction();
trans.Date = (DateTime)jObject["date"];
trans.Payee = (string)jObject["payee"];
trans.Amount = (double)jObject["amount"];
trans.Category = (string)jObject["category"];
items.Add(trans);
}

最佳答案

如果您已经有 JArrayresult并且您想将其转换为 ObservableCollection<Transaction>你可以这样做:

items = result.ToObject<ObservableCollection<Transaction>>();

演示:https://dotnetfiddle.net/saQmas

关于json.net - 将 JArray 复制到 ObservableCollection 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596176/

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