JSON

Windows 10开发基础

字号+ 作者:H5之家 来源:H5之家 2015-11-24 18:58 我要评论( )

主要内容: Linq to XML Newtonsoft.Json.Linq来解析JSON 博客园RSS(http://www.cnbl

主要内容:

1.Linq to XML

     Linq to XML不是一个新鲜的话题了,网上以及各种资料对这个介绍都比较多。今天就简单了解下,不做深入的研究。。。在代码中生成XML文档,使用Linq to XML会比Windows.Data.Xml.Dom命名空间下的类简单,使用起来也更加灵活。Linq to XML是对Linq表达式的扩展,我们也可以在处理XML时用上Linq语句。

先直接上一段代码:

XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", null)); XElement root = new XElement("students", new XElement("student", new XAttribute("id", "201313138063"), new XAttribute("name", "czh"), new XAttribute("age", 18)), new XElement("student", new XAttribute("id", "201313138064"), new XAttribute("name", "dyq"), new XAttribute("age", 19)), new XElement("student", new XAttribute("id", "201313138065"), new XAttribute("name", "wxk"), new XAttribute("age", 22)), new XElement("student", new XAttribute("id", "201313138069"), new XAttribute("name", "cmf"), new XAttribute("age", 20))); xdoc.Add(root); textBlock.Text= xdoc.ToString();

首先我们创建了一个XDocument对象,代表整个XML文档,在创建这个对象时,我们传入了一个XDeclaration对象,这个对象声明了xml的基本信息(<?xml version="1.0" encoding="utf-8"?>)。XElement对象则对应着一个个的XML标签元素,XAttribute则对应这些元素里的属性。这段代码里面,root对应着<studens>标签,然后创建root时,我们传入了多个XElement对象,这些对象对应着<students>里面的<student>标签,然后把root添加到xdoc中,这样一个XML文档就创建完成了。对比上面的代码和下面生成的XML看一下咯。

<?xml version="1.0"?> <students> <student age="18" name="czh" id="201313138063"/> <student age="19" name="dyq" id="201313138064"/> <student age="22" name="wxk" id="201313138065"/> <student age="20" name="cmf" id="201313138069"/> </students>

接着,我们把上面的XML转化为对象列表,用列表控件进行显示:

XDocument xdoc = XDocument.Parse(textBlock.Text); XElement root= xdoc.Root; var students = from student in root.Elements("student") select new { SId=(string)student.Attribute("id"), SName= (string)student.Attribute("name"), SAge = (int)student.Attribute("age") }; listView.ItemsSource = students;

在这里我们用到了Linq中的select语句,将root(对应于students)中的所有student元素转换成了匿名对象,这个匿名对象有SId、SName、SAge三个属性,然后将这些匿名对象组成的students(类型为IEnumerable<T>)绑定到ListView控件上显示:

Windows 10开发基础——XML和JSON (二)

2.Newtonsoft.Json.Linq来解析JSON

     Newtonsoft.Json.Linq是一个比较火的第三方JSON解析库,我们来简单使用下。。。在建好的项目上右击“引用”节点,选择“管理Nuget包”,然后在搜索栏里面输入“Newtonsoft”,选择第一个,点安装就是了。我们要解析JSON数据来源于 中国和世界天气全能版 ()

这个第三方库使用起来还是比较方便的,我们主要用到了JObject、JToken、JArray三个类,直接贴代码。

前台xaml:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition Height="50"></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> <TextBox x:Name="tbCity" Margin="10,10,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="235"/> <Button x:Name="btnSearch" Content="Search" HorizontalAlignment="Center" Margin="20,10,0,0" VerticalAlignment="Top" Click="btnSearch_Click"/> </StackPanel> <Grid Visibility="Collapsed" HorizontalAlignment="Center" Grid.Row="1" x:Name="now_grid"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="当前天气状况"></TextBlock> <TextBlock Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="当前温度(C)"></TextBlock> <TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="相对湿度(%)"></TextBlock> <TextBlock Grid.Row="3" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="能见度(km)"></TextBlock> <TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="空气质量指数"></TextBlock> <TextBlock Grid.Row="5" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="PM2.5(ug/m³)"></TextBlock> <TextBlock Grid.Row="6" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="空气质量类别"></TextBlock> <TextBlock Grid.Row="7" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="风向"></TextBlock> <TextBlock Grid.Row="8" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="风力"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="0" Grid.Column="1" Text="{Binding Txt}"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="1" Grid.Column="1" Text="{Binding Tmp}"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="2" Grid.Column="1" Text="{Binding Hum}"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="3" Grid.Column="1" Text="{Binding Vis}"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="4" Grid.Column="1" Text="{Binding Aqi}"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="5" Grid.Column="1" Text="{Binding Pm25}"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="6" Grid.Column="1" Text="{Binding Qlty}"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="7" Grid.Column="1" Text="{Binding Winddir}"></TextBlock> <TextBlock Margin="12,0,0,0" Grid.Row="8" Grid.Column="1" Text="{Binding Windsc}"></TextBlock> </Grid> <FlipView Visibility="Collapsed" x:Name="fv" Grid.Row="2"> <FlipView.ItemTemplate> <DataTemplate> <Grid> <Grid.RowDefinitions> <RowDefinition Height="2*"></RowDefinition> <RowDefinition Height="5*"></RowDefinition> <RowDefinition Height="2*"></RowDefinition> </Grid.RowDefinitions> <StackPanel Orientation="Vertical"> <TextBlock Text="{Binding Date}" HorizontalAlignment="Center"></TextBlock> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Margin="48,0,0,0" Text="日出时间:"></TextBlock> <TextBlock Margin="12,0,0,0" Text="{Binding Astrosr}"></TextBlock> <TextBlock Margin="24,0,0,0" Text="日出时间:"></TextBlock> <TextBlock Margin="12,0,0,0" Text="{Binding Astross}"></TextBlock> </StackPanel> </StackPanel> <Grid Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="相对湿度(%)"></TextBlock> <TextBlock Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="降水概率"></TextBlock> <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Hum}"></TextBlock> <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Pop}"></TextBlock> <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.ColumnSpan="2"> <TextBlock Margin="36,4,0,0" Text="最高温度(C):"></TextBlock> <TextBlock Margin="12,4,0,0" Text="{Binding Tmpmax}"></TextBlock> <TextBlock Margin="24,4,0,0" Text="最低温度(C):"></TextBlock> <TextBlock Margin="12,4,0,0" Text="{Binding Tmpmin}"></TextBlock> </StackPanel> <StackPanel Orientation="Horizontal" Grid.Row="3" Grid.ColumnSpan="2"> <TextBlock Margin="24,4,0,0" Text="白天天气状况:"></TextBlock> <TextBlock Margin="12,4,0,0" Text="{Binding Txt_d}"></TextBlock> <TextBlock Margin="24,4,0,0" Text="夜晚天气状况:"></TextBlock> <TextBlock Margin="12,4,0,0" Text="{Binding Txt_n}"></TextBlock> </StackPanel> </Grid> <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Margin="48,0,0,0" Text="风向:"></TextBlock> <TextBlock Margin="12,0,0,0" Text="{Binding Winddir}"></TextBlock> <TextBlock Margin="24,0,0,0" Text="风力:"></TextBlock> <TextBlock Margin="12,0,0,0" Text="{Binding Windsc}"></TextBlock> </StackPanel> </Grid> </DataTemplate> </FlipView.ItemTemplate> </FlipView> <Grid x:Name="sugestion_grid" Visibility="Collapsed" Grid.Row="3" Margin="12"> <Grid.RowDefinitions> <RowDefinition Height="2*"></RowDefinition> <RowDefinition Height="2*"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Grid Margin="8" Grid.Row="0" Grid.Column="0"> <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> </Grid.RowDefinitions> <TextBlock Text="舒适度指数:"></TextBlock> <TextBlock Grid.Row="1" Text="{Binding Comfbrf}"></TextBlock> <TextBlock Grid.Row="2" Text="{Binding Comftxt}" TextWrapping="Wrap"></TextBlock> </Grid> <Grid Margin="8" Grid.Row="0" Grid.Column="1"> <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> </Grid.RowDefinitions> <TextBlock Text="穿衣指数:"></TextBlock> <TextBlock Grid.Row="1" Text="{Binding Drsgbrf}"></TextBlock> <TextBlock Grid.Row="2" Text="{Binding Drsgtxt}" TextWrapping="Wrap"></TextBlock> </Grid> <Grid Margin="8" Grid.Row="1" Grid.Column="0"> <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> </Grid.RowDefinitions> <TextBlock Text="感冒指数:"></TextBlock> <TextBlock Grid.Row="1" Text="{Binding Flubrf}"></TextBlock> <TextBlock Grid.Row="2" Text="{Binding Flutxt}" TextWrapping="Wrap"></TextBlock> </Grid> <Grid Margin="8" Grid.Row="1" Grid.Column="1"> <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> <RowDefinition Height="auto"></RowDefinition> </Grid.RowDefinitions> <TextBlock Text="运动指数:"></TextBlock> <TextBlock Grid.Row="1" Text="{Binding Sportbrf}"></TextBlock> <TextBlock Grid.Row="2" Text="{Binding Sporttxt}" TextWrapping="Wrap"></TextBlock> </Grid> </Grid> </Grid> View Code

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ASP.NET Web API 2 返回 Json格式

    ASP.NET Web API 2 返回 Json格式

    2016-02-10 17:18

  • wordpress 4.4 禁用REST API/移除wp

    wordpress 4.4 禁用REST API/移除wp

    2016-01-18 18:10

  • 突袭HTML5之Javascript API扩展3—本地存储全新体验

    突袭HTML5之Javascript API扩展3—本地存储全新体验

    2015-11-25 09:21

  • Java Json API:Gson使用简单入门

    Java Json API:Gson使用简单入门

    2015-11-23 17:30

网友点评