为了账号安全,请及时绑定邮箱和手机立即绑定

将 JSON API 从字典解析为 Xamarin.Forms 中 ListView

将 JSON API 从字典解析为 Xamarin.Forms 中 ListView

C#
慕沐林林 2022-07-23 17:50:53
我正在尝试解析有错误的 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 datavar _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 使用的 ObservableColection。任何帮助将不胜感激。
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我认为预览的答案是正确的,但需要铸造所以试试这个


//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);


查看完整回答
反对 回复 2022-07-23
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我建议通过 jsonutils.com 运行您的 JSON 响应,并将生成的类用作反序列化步骤中的模型。它通常是万无一失的,并且在尝试手动定义类时消除了潜在的人为错误。



查看完整回答
反对 回复 2022-07-23
  • 2 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信