>我正在尝试解析一个有错误的 API 端点。
这是从 API 返回的原始 JSON
{"posts":{"29.11.2018":[{"title":"xxx","image_url":null,"message":"xxxx","time":"08:30 AM"}]}
这是我的根对象
public class Notification
{
[JsonProperty("posts")]
public Dictionary<string, List<Post>> posts { get; set; }
}
public class Post
{
[JsonProperty("title")]
public string title { get; set; }
[JsonProperty("image_url")]
public Uri imageUrl { get; set; }
[JsonProperty("message")]
public string message { get; set; }
[JsonProperty("time")]
public string time { get; set; }
}
我的服务类
var notification = JsonConvert.DeserializeObject<Dictionary<string, Notification>>(apiContent); //Deserialize the JSON data
var _schoolNotification = new ObservableCollection<Post>(notification.Keys);
NotificationListView.ItemsSource = _schoolNotification;
我编辑的 XAML
<StackLayout>
<Label Style="{StaticResource ListViewTitle}" Text="{Binding title}" />
<Label Text="{Binding message}" TextColor="{DynamicResource ListViewDateColor}" />
</StackLayout>
我面临的问题是,我无法将此字典解析为Xamarin.Forms使用的可观察集合。
任何帮助将不胜感激。
我认为预览答案是正确的,但需要投射,所以试试这个
//Deserialize the JSON data
var notification = JsonConvert.DeserializeObject<Notification>(apiContent);
List<Post> posts = new List<Post>();
if (notification?.posts != null){
foreach(var item in notification.posts.Values){
posts.AddRange(item);
}
}
var _schoolNotification = new ObservableCollection<Post>(posts);
我建议通过 jsonutils.com 运行您的 JSON 响应,并将生成的类用作反序列化步骤中的模型。它通常是万无一失的,并在尝试手动定义类时消除潜在的人为错误。