[UWP] [C#]如何将JSON内容读取到GridView

人气:1,000 发布:2022-09-22 标签: wpdevelop

问题描述

嗨 -

我很想读取json内容以列出视图。我有阅读xml内容的经验,但不是json,根据我的理解,它是不同的。所以这里是 我使用的 API Ticketmaster (目前我唯一感兴趣的是活动标题,地点,日期和单个图片)或者您可以使用 API资源管理器,以查看如何更好地组织json。目前我有为我想要的内容编写的类:

 class EventClass  { public string Name {get;组; }  public string Date {get;组; }  public string Venue {get;组; }  public string Image {get;组; } } 

这就是我通常解析xml数据的方法,但我需要用json执行相同操作的等效代码:

 Uri requestUri = new Uri(" https://app.ticketmaster.com/discovery/v2/events.json?apikey = ZHQvjOwoHLazy25GC74HIGww694G869o& latlong =" + ApplicationData。 Current.LocalSettings.Values ["&的LatLong QUOT]。的ToString());  XmlDocument xmlDocument = await XmlDocument.LoadFromUriAsync(requestUri);   XDocument xDoc = System.Xml.Linq.XDocument.Parse(xmlDocument.GetXml());  var data =来自xDoc.Descendants(" event")中的查询 select new EventClass  { Name =(string)query.Element(" events")。元素(" name"), Date =(string)query.Element(" events")。Element(" dates")。Element(" start")。Element(" localDate") , Venue =(字符串)query.Element(" events")。元素(" embedded")。元素("场地")。元素(" 0")。元素(" name") ),图像=(字符串)query.Element(" events")。元素(" images")。元素(" 0")。元素(" url"),} ;  List< EventClass> myList = data.ToList();  Event_List.ItemsSource = myList; 

这是它所列出的界面:

< pre class ="prettyprint">< GridView x:Name =" Event_List"的Horizo​​ntalAlignment = QUOT;拉伸"余量= QUOT; 0,48,0,0" Grid.RowSpan = QUOT; 2英寸VerticalAlignment = QUOT;拉伸"> < GridView.ItemTemplate> < DataTemplate> < Grid> < Image Source =" {Binding Image}" /> < Grid Margin =" 10"> < Grid.RowDefinitions> < RowDefinition /> < RowDefinition /> < RowDefinition /> < /Grid.RowDefinitions> < TextBlock Text =" {Binding Name}" Style =" {ThemeResource HeaderTextBlockStyle}" Grid.Row = QUOT; 0" /> < TextBlock Text =" {Binding Date}" Style =" {ThemeResource SubtitleTextBlockStyle}" Grid.Row = QUOT 1 QUOT; /> < TextBlock Text =" {Binding Venue}" Grid.Row = QUOT; 2英寸/> < / Grid> < / Grid> < / DataTemplate> < /GridView.ItemTemplate> < / GridView>

如果您有任何建议或我的答案,请告诉我。任何事情都会受到赞赏。谢谢!

Zachary Bowling - ZAD Apps

解决方案

我正在使用 Newtonsoft.Json 现在。它很容易在UWP应用程序中使用。看看介绍:https://www.newtonsoft.com/json/help/html/Introduction.htm。它就像魔法一样。

Hi-

I am new to the idea of reading json content to list views. I have experience in reading xml content, but not json and from what I understand, it is different. So here is the API I am using from Ticketmaster (currently the only thing I am interested in reading is the event title, venue, date, and a single image) or you can use the API explorer to view how the json is organized better. Currently I have the class written for the content I want:

class EventClass
    {
        public string Name { get; set; }
        public string Date { get; set; }
        public string Venue { get; set; }
        public string Image { get; set; }
    }

This is how I'd normally parse the data for xml, but I need the equivalent code for doing the same thing with json:

Uri requestUri = new Uri("https://app.ticketmaster.com/discovery/v2/events.json?apikey=ZHQvjOwoHLazy25GC74HIGww694G869o&latlong=" + ApplicationData.Current.LocalSettings.Values["LatLong"].ToString());
            XmlDocument xmlDocument = await XmlDocument.LoadFromUriAsync(requestUri);

            XDocument xDoc = System.Xml.Linq.XDocument.Parse(xmlDocument.GetXml());
            var data = from query in xDoc.Descendants("event")
                       select new EventClass
                       {
                           Name = (string)query.Element("events").Element("name"),
                           Date = (string)query.Element("events").Element("dates").Element("start").Element("localDate"),
                           Venue = (string)query.Element("events").Element("embedded").Element("venues").Element("0").Element("name"),
                           Image = (string)query.Element("events").Element("images").Element("0").Element("url"),
                       };
            List<EventClass> myList = data.ToList();
            Event_List.ItemsSource = myList;

This is the interface to which it's listed:

<GridView x:Name="Event_List" HorizontalAlignment="Stretch" Margin="0,48,0,0" Grid.RowSpan="2" VerticalAlignment="Stretch">
            <GridView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Image Source="{Binding Image}"/>
                        <Grid Margin="10">
                            <Grid.RowDefinitions>
                                <RowDefinition/>
                                <RowDefinition/>
                                <RowDefinition/>
                            </Grid.RowDefinitions>
                            <TextBlock Text="{Binding Name}" Style="{ThemeResource HeaderTextBlockStyle}" Grid.Row="0"/>
                            <TextBlock Text="{Binding Date}" Style="{ThemeResource SubtitleTextBlockStyle}" Grid.Row="1"/>
                            <TextBlock Text="{Binding Venue}" Grid.Row="2"/>
                        </Grid>
                    </Grid>
                </DataTemplate>
            </GridView.ItemTemplate>
        </GridView>

If you have any suggestions or my answer, please let me know. Anything will be appreciated. Thanks!

Zachary Bowling - ZAD Apps

解决方案

I'm usingNewtonsoft.Json now. It's easy to use in UWP apps. Take a look at the introduction: https://www.newtonsoft.com/json/help/html/Introduction.htm. It works like magic.

761