猿问

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

我正在尝试解析有错误的 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 使用的 ObservableColection。


任何帮助将不胜感激。


慕沐林林
浏览 93回答 2
2回答

慕桂英546537

我认为预览的答案是正确的,但需要铸造所以试试这个//Deserialize the JSON data&nbsp; var notification = JsonConvert.DeserializeObject<Notification>(apiContent);&nbsp;&nbsp; &nbsp; List<Post> posts = new List<Post>();&nbsp; &nbsp; &nbsp; if (notification?.posts != null){&nbsp; &nbsp; &nbsp; &nbsp; foreach(var item in notification.posts.Values){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;posts.AddRange(item);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; var _schoolNotification = new ObservableCollection<Post>(posts);

慕无忌1623718

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