2016-05-10 2 views
2

Я новичок в создании универсальных приложенийЧтение JSON из файла UWP (C#)

У меня есть JSON в .txt-файле. Image и TextBox в xaml

Мне нужно прочитать JSON из .txt и разобрать текст из JSON в TextBox. Для изображения мне нужно, чтобы загрузить его с помощью URL, что в JSON

Мой JSON

Array 
(
    [0] => Array 
     (
      [post_title] => Ролл Чеддер c темпура креветкой 
      [post_excerpt] => Рис, нори, темпура креветка, сыр филадельфия, огурец, сыр чеддер, соус голландский 

      [img_url] => http://new.murakami.ua/wp-content/uploads/535_520Rol-chedr-s-sirom-filadelfiej-i-tempura-krevetkoyu.jpg 
      [visibility] => visible 
      [price] => 124.00 
      [weight] => 195/16 
      [sku] => 233 
     ) 

    [1] => Array 
     (
      [post_title] => Ролл спайси лосось 
      [post_excerpt] => Рис, нори, лосось, спайси соус, икра масаго, зеленый лук 
      [img_url] => http://new.murakami.ua/wp-content/uploads/535_520Rol-spajsi-losos.jpg 
      [visibility] => visible 
      [price] => 68.00 
      [weight] => 130/16 
      [sku] => 239 
     ) 

    [2] => Array 
     (
      [post_title] => Ролл с пастрами 

      [post_excerpt] => Рис, нори, пастрами, листья салата, перец болгарский, огурец, соус горчичный, помидор, голландский соус 

      [img_url] => http://new.murakami.ua/wp-content/uploads/535_520Rol-z-pastrami.jpg 
      [visibility] => visible 
      [price] => 98.00 
      [weight] => 185/16 
      [sku] => 245 
     ) 

    [3] => Array 
     (
      [post_title] => Ролл огуречный лосось 

      [post_excerpt] => Рис, нори, лосось, сыр филадельфия, сладкий омлет, икра тобико, огурец, голландский соус 

      [img_url] => http://new.murakami.ua/wp-content/uploads/535_520Rol-ogirkovij-losos.jpg 
      [visibility] => visible 
      [price] => 112.00 
      [weight] => 190/16 
      [sku] => 244 
     ) 

    [4] => Array 
     (
      [post_title] => Ролл оши абури с лососем и голландским соусом 

      [post_excerpt] => Рис, лосось, огурец, перец чили, голландский соус 

      [img_url] => http://new.murakami.ua/wp-content/uploads/535_520Oshi-aburi-z-lososem-i-golandskim-sousom.jpg 
      [visibility] => visible 
      [price] => 98.00 
      [weight] => 18016 
      [sku] => 240 
     ) 

Как это сделать в Adroid через Xamarin

var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); 
     var filename = System.IO.Path.Combine(path, "cache3.txt"); 
     JsonValue readJson; 
     var jsonString = File.ReadAllText(filename); 
     readJson = JsonObject.Parse(jsonString); 



    private async void ParseAndDisplay1(JsonValue readJson) 
    { 



     TextView productname = FindViewById<TextView>(Resource.Id.posttittle); 
     TextView price = FindViewById<TextView>(Resource.Id.price); 
     TextView weight = FindViewById<TextView>(Resource.Id.weight); 
     ImageView imagen = FindViewById<ImageView>(Resource.Id.image1); 
     ImageButton add = FindViewById<ImageButton>(Resource.Id.add); 
     add.Click += delegate 
     { 
      var intent = new Intent(this, typeof(BludoDetail)); 
      StartActivity(intent); 
     }; 
     productname.Click += delegate 
     { 
      var intent485 = new Intent(this, typeof(BludoDetail)); 
      StartActivity(intent485); 
     }; 
     JsonValue firstitem = readJson[0]; 

     productname.Text = firstitem["post_title"]; 
     price.Text = firstitem["price"] + " грн"; 
     weight.Text = firstitem["weight"];//"г"; 


     Koush.UrlImageViewHelper.SetUrlDrawable(imagen, firstitem["img_url"], null, 5000000); 
    } 

В Xamarin.Android я был Коуш плагин , для загрузки и кеширования изображения

Как я могу разобрать информацию от Json до TextBox в UWP и как загрузить изображение и кешировать его?

ответ

0

Вы можете использовать Json.NET для разбора json.

Вы должны создать класс, который обрабатывает json и использует привязки для объединения данных с xaml. Для того, чтобы скачать изображение использовать HttpClient

0

Для чтения файлов из всех мест check this link, а затем разобрать его можно использовать Json.Net package как этот

public IJsonData ParseWithJObjectParse(string json, string episodesName, string titleName) 
{ 
    var obj = JObject.Parse(json); 

    if (obj == null) 
     return null; 

    var items = obj.GetValue(episodesName).Select(
e => new JsonItem(((JObject)e).GetValue(titleName).ToString())); 

    var jsonItems = items.Cast<IJsonItem>().ToArray(); 
    var result = new JsonData 
    { 
     Items = jsonItems 
    }; 

    return result; 
} 

Если вы хотите, то вы можете также использовать Simple.Json и Microsoft.Json, но я предпочитаю Json.Net за его легкость.

Для второй части BitmapImage автоматически кэширует удаленные изображения по умолчанию. Он лучше всего используется в сочетании с CreateOptions = «BackgroundCreation» для лучшей производительности.

<Image Height="100" Width="100" Margin="12,0,9,0"> 
<Image.Source> 
    <BitmapImage UriSource="{Binding ImgURL}" CreateOptions="BackgroundCreation"/> 
    </Image.Source> 
</Image> 

Если вы хотите контролировать кэширование самостоятельно, то check this link.

+0

Для UriSource, у меня есть свой адрес в формате JSON, что мне нужно, чтобы там писать? –

+0

И сначала ваша ссылка для победы 8, я пишу приложение для win 10 mobile (uwp) –

+0

Как я понял, мне нужно скачать изображения в формате .cs, а не в xaml –