2 votes

Lire JSON à partir d'un fichier UWP (C#)

Je suis plus récent dans la création d'applications universelles

J'ai du JSON dans un fichier .txt. Image et TextBox en xaml

Je dois lire JSON à partir de .txt et analyser le texte de JSON vers TextBox. Pour l'image, j'ai besoin de la télécharger via une url, en JSON.

Mon 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
        )

Comment je le fais dans Adroid via 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);
    }

Dans Xamarin.Android, j'avais le plugin Koush, pour télécharger et mettre en cache les images.

Comment puis-je analyser les informations de Json vers TextBox dans UWP et comment puis-je télécharger une image et la mettre en cache ?

0voto

Jerrak0s Points 48

Vous pourriez utiliser Json.NET pour analyser le json.

Il faut créer une classe qui gère le json et utiliser les bindings afin de combiner les données avec le xaml. Pour télécharger une image, utilisez HttpClient

0voto

Rohit Points 512

Pour lire les fichiers de tous les emplacements Vérifiez ce lien et ensuite, pour l'analyser, vous pouvez utiliser Paquet Json.Net comme ceci

    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;
}

Si vous voulez, vous pouvez aussi utiliser Simple.Json y Microsoft.Json mais je préfère Json.Net pour sa facilité.

D'autre part, BitmapImage met automatiquement en cache les images distantes par défaut. Il est préférable de l'utiliser en conjonction avec CreateOptions="BackgroundCreation" pour obtenir les meilleures performances.

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

Si vous voulez contrôler vous-même la mise en cache, alors Vérifiez ce lien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X