none
Liste mit Daten aus Json füllen RRS feed

  • Frage

  • Hallo!

    Nach diesem Beispiel http://msdn.microsoft.com/en-us/library/windows/apps/hh465496.aspx möchte ich meine Liste mit den Daten aus einem lokalen Json füllen. Ich habe folgendes gemacht:

    var jsonFolder = Windows.ApplicationModel.Package.current.installedLocation;
        jsonFolder.createFolderAsync("folderWithJson", Windows.Storage.CreationCollisionOption.openIfExists).then(
            function (appDataFolder) {
                appDataFolder.createFileAsync("myJson.json", Windows.Storage.CreationCollisionOption.openIfExists).then(
                    function (file) {
                        Windows.Storage.FileIO.readTextAsync(file).done(
                            function (contents) {
                                console.log(contents);
                            },
                            function (error) {
                                console.log(error);
                            }
                        );
                    },
                    function (error) {
                        console.log(error);
                    }
                );
            },
            function (error) {
                console.log(error);
            }
            );

    Es wird leider nicht mal in der Konsole was ausgegeben. Woran könnte es liegen?

    Vielen Dank im Voraus!

    Samstag, 6. Juli 2013 20:22

Antworten

Alle Antworten

  • Hallo jag0,

    Du kannst so etwas ausprobieren

    Windows.Storage.StorageFile.getFileFromApplicationUriAsync("ms-appdata:///local/file.txt").done(
        function(file) {
            // Process file
        }
    );
    

    Gruss,
    Ionut
    Montag, 8. Juli 2013 11:02
    Moderator
  • Hallo Lonut, ich habe es probiert, aber es ging nicht. Wahrscheinlich weil mein file in einem Ordner liegt. Ich denke mal die Variante mit installedLocation ist richtig für meinen Fall. Ich habe meinen Code einbisschen überarbeitet und kann ein paar Werte im div ausgeben. Allerdings kann ich sie nicht mit ListView integrieren. :(

    (function () {
        "use strict";
        var fillTitle;
        var fillDescription;
        var fibulisFolder = Windows.ApplicationModel.Package.current.installedLocation;
        var newString = "";
      
        fibulisFolder.createFolderAsync("ordnerMitJson", Windows.Storage.CreationCollisionOption.openIfExists).then
            (function (ordnerMitJson) {   
                ordnerMitJson.createFileAsync("myJson.json", Windows.Storage.CreationCollisionOption.openIfExists).then
                    (function (myJson) {
                        //document.getElementById('Div1').innerHTML = fibuliFile.path;
                        myJson.openAsync(Windows.Storage.FileAccessMode.read).then
                           (function (stream) {
                                var size = stream.size;
                                var inputStream = stream.getInputStreamAt(0);
                                var reader = new Windows.Storage.Streams.DataReader(inputStream);
                                    reader.loadAsync(size).then
                                        (function () {
                                            var array = new Array(size);
                                            reader.readBytes(array);
                                            for (var i = 0; i < array.length; i++) {
                                                if (array[i] >= 32 && array[i] <= 126) {
                                                    var c = String.fromCharCode(array[i]);
                                                    newString += c;
                                                }
                                            }   
                                            //DataUtils.feedItems = newString;
                                            // document.getElementById('Div2').innerHTML = newString;
                                            //var myObject = eval('(' + newString + ')');
                                            //document.getElementById('Div2').innerHTML = myObject;
                                            //DataUtils.feedItems = myObject;
                                            var obj = JSON.parse(newString);
                                            
                                            var title = obj.title.de;
                                            var description = obj.description.de;
                                            
                                            Title.fillTitle = title;
                                            Description.fillDescription = description;
                                            //DataArray.dataArray = new Array(title, description);
                                            //document.getElementById('Div1').innerHTML = DataArray.dataArray;
                                            document.getElementById('Div1').innerHTML = title;
                                            document.getElementById('Div2').innerHTML = description;
                                           
    
                                        })
                           })
                   });
                    
            });
    
        //WinJS.Namespace.define("DataArray", { dataArray: dataArray });
        WinJS.Namespace.define("Title", { fillTitle: fillTitle });
        WinJS.Namespace.define("Description", { fillDescription: fillDescription });
       
        var dataArray = new Array(fillTitle, fillDescription);
    
       
     
        /*var dataArray = [
        { title: "Basic banana", text: "Low-fat frozen yogurt", picture: "images/60banana.png" },
        { title: "Banana blast", text: "Ice cream", picture: "images/60banana.png" },
        { title: "Brilliant banana", text: "Frozen custard", picture: "images/60banana.png" },
        { title: "Orange surprise", text: "Sherbet", picture: "images/60orange.png" },
        { title: "Original orange", text: "Sherbet", picture: "images/60orange.png" },
        { title: "Vanilla", text: "Ice cream", picture: "images/60vanilla.png" },
        { title: "Very vanilla", text: "Frozen custard", picture: "images/60vanilla.png" },
        { title: "Marvelous mint", text: "Gelato", picture: "images/60mint.png" },
        { title: "Succulent strawberry", text: "Sorbet", picture: "images/60strawberry.png" }
        ];*/
    
         var dataList = new WinJS.Binding.List(dataArray);
        
        
        // Create a namespace to make the data publicly
        // accessible. 
         var publicMembers =
            {
                itemList: dataList
            };
        WinJS.Namespace.define("DataExample", publicMembers);
    
    })();
    

    Viele Grüße
    Dienstag, 9. Juli 2013 14:19
  • Hallo jag0,

    Schau Dir mal folgende Beispiel an Du kannst es ganz einfach verwenden um Dein Ziel zu erreichen.http://www.codeproject.com/Articles/498913/Windows-8-Apps-Create-objects-from-a-JSON-file

    Gruss,

    Ionut

    Mittwoch, 10. Juli 2013 14:53
    Moderator
  • Hi,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.

    Wenn nicht, neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    Danke und viele Grüße,

    Ciprian


    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Mittwoch, 9. April 2014 14:13