Reading JSON : Json « Communication « Silverlight






Reading JSON

   

<UserControl x:Class='SilverlightApplication3.MainPage'
    xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' 
    xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
    xmlns:d='http://schemas.microsoft.com/expression/blend/2008' 
    xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' 
    mc:Ignorable='d' 
    d:DesignWidth='640' 
    d:DesignHeight='480'>

    <Grid x:Name="LayoutRoot" Background="#FF959595">
        <Grid.RowDefinitions>
            <RowDefinition Height="25"></RowDefinition>
            <RowDefinition Height="25"></RowDefinition>
            <RowDefinition Height="25"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Orientation="Horizontal" Margin="5,5,0,0">
            <TextBlock Text="Lat:" />
            <TextBox x:Name="txLat" Height="22" Width="85" Text="40.78343" />
            <TextBlock Text="Long:" />
            <TextBox x:Name="txLong" Height="22" Width="85" Text="-73.96625" />
            <Button x:Name="btnXML" Content="Get XML" Click="LoadJSON" />
        </StackPanel>
        <StackPanel Grid.Row="1" Orientation="Horizontal" Margin="5,5,0,0">
            <TextBlock Text="City:" />
            <TextBlock x:Name="txCity" FontSize="12" FontFamily="Courier New" VerticalAlignment="Center" />
        </StackPanel>
        <StackPanel Grid.Row="2" Orientation="Horizontal" Margin="5,5,0,0">
            <TextBlock Text="Name:" />
            <TextBlock x:Name="txName" FontSize="12" FontFamily="Courier New" VerticalAlignment="Center" />
        </StackPanel>
        <StackPanel Grid.Row="3" Margin="5,5,0,0">
            <TextBlock Text="Raw Results:" />
            <TextBlock x:Name="txtResults" TextWrapping="Wrap" FontFamily="Courier New" FontSize="11" />
        </StackPanel>
    </Grid>
</UserControl>



//File: Page.cs
using System;
using System.IO;
using System.Json;
using System.Net;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Xml;
using System.Runtime.Serialization.Json;

namespace SilverlightApplication3
{
  public partial class MainPage : UserControl
  {
    SynchronizationContext uiThread;

    public MainPage()
    {
      InitializeComponent();
    }

    private void LoadJSON(object sender, RoutedEventArgs e)
    {
        uiThread = SynchronizationContext.Current;

        string uriPath = "http://ws.geonames.org/neighbourhoodJSON?formatted=true&lat={0}&lng={1}&style=full";
        Uri uri = new Uri(string.Format(uriPath, txLat.Text, txLong.Text),
          UriKind.Absolute);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
        request.BeginGetResponse(GetResults, request);
    }

    public void GetResults(IAsyncResult e)
    {
        HttpWebRequest request = (HttpWebRequest)e.AsyncState;
        HttpWebResponse response =
          (HttpWebResponse)request.EndGetResponse(e);
        Stream responseStream = response.GetResponseStream();

        uiThread.Post(UpdateTextJSONObject, responseStream);
    }

    public void UpdateTextJSONObject(Object stream)
    {
        JsonObject hood = (JsonObject)JsonObject.Load((Stream)stream);

        txCity.Text = hood["neighbourhood"]["city"];
        txName.Text = hood["neighbourhood"]["name"];
        txtResults.Text = hood.ToString();
    }

      public void UpdateTextJsonSerializer(object stream)
      {
          DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(MyResults));
          MyResults hood = (MyResults)ser.ReadObject((Stream)stream);

          txCity.Text = hood.neighbourhood.city;
          txName.Text = hood.neighbourhood.name;
      }
  }

  public class MyResults
  {
      public Neighborhood neighbourhood { get; set; }
  }

  public class Neighborhood
  {
      public string adminName2 { get; set; }
      public string adminCode2 { get; set; }
      public string adminCode1 { get; set; }
      public string countryName { get; set; }
      public string name { get; set; }
      public string countryCode { get; set; }
      public string city { get; set; }
      public string adminName1 { get; set; }
  }
}

   
    
    
  








Related examples in the same category