无法将JArray复制到ObservableCollection
问题描述:
所以我觉得我真的很接近,只是缺少一点胶水来让魔法工作。无法将JArray复制到ObservableCollection
考虑一个代码类:
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
[
{
"date": "2014-09-26T00:00:00Z",
"payee": "Expensive Restaurant",
"amount": -199,
"category": "Dining",
}
]
我已验证返回的JArray对象被正确解析并填充该JSON响应。我想将数据导入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>'
我已经阅读了大量的样本,看起来这应该是超级简单的,所以我确信我错过了一些简单的东西。任何帮助赞赏。
UPDATE:
此我想要做什么和作品,但似乎我击败的目的一些内置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);
}
答
如果你已经有一个result
和JArray
您想将其转换为ObservableCollection<Transaction>
,你可以做这样的:
items = result.ToObject<ObservableCollection<Transaction>>();
是的!这感觉就像我从未尝试过的变化。 :) – OldDogNewTrick 2014-09-01 03:47:11