Заполнение переменной javascript с помощью JSON - PullRequest
2 голосов
/ 19 января 2012

Я использую разрыв телефона, и я хочу прочитать файл с файлом API разрыв телефона. Я могу прочитать файл. Но когда я помещаю свой JSON в переменную, он возвращает только «[]».

var json;
function readFS(fileSystem) {
            fileSystem.root.getFile("readme.txt", {create: true}, readFileEntry, fail);
        }

        function readFileEntry(fileEntry) {
            fileEntry.file(gotFileread, fail);
        }

        function gotFileread(file){
            readAsText(file);
        }


        function readAsText(file) {
            var reader = new FileReader();
            reader.onloadend = function(evt) {
                console.log("Read as text");
                console.log(evt.target.result);
                json = evt.target.result; // this returns only []
                navigator.notification.alert(evt.target.result); // this returns the real JSON :o

            };
            reader.readAsText(file);
        }

Это JSON, который находится в readme.txt

{"games":[{"id":"2","name":"bartje","photo":"photo2.png","description":"kimpe","length":"is","totalDownloads":"0","totalFinished":"0","locations":[{"id":"3","name":"loc21","photo":"loc21.jpg","description":"loc21","FK_Game_id":"2","lat":"51.0000","long":"4.0000","status":"0"},{"id":"5","name":"loc22","photo":"loc22.jog","description":"locatie 22","FK_Game_id":"2","lat":"51.2330","long":"40.2222","status":"1"}]},{"id":"3","name":"aa","photo":"photo3.jPg","description":"aa","length":"aa","totalDownloads":"0","totalFinished":"3","locations":[{"id":"4","name":"loc4","photo":"loc4.jpg","description":"loc4","FK_Game_id":"3","lat":"51.2191","long":"4.4021","status":"0"}]}]}

Теперь я могу получить данные из файла и поместить их в переменную. Теперь моя единственная проблема в том, что я не могу использовать его как json, как

json.games[0].id

Я пытался сделать

json = eval(evt.target.result);

Но это не работает: o

Ответы [ 3 ]

2 голосов
/ 19 января 2012

Попробуйте:

myJson = JSON.parse(evt.target.result);

, поскольку это создаст объект из текста, который вы прочитали.

0 голосов
/ 19 января 2012

если evt.target.result строка

'{"games":[{"id":"2","name":"bartje","photo":"photo2.png","description":"kimpe","length":"is","totalDownloads":"0","totalFinished":"0","locations":[{"id":"3","name":"loc21","photo":"loc21.jpg","description":"loc21","FK_Game_id":"2","lat":"51.0000","long":"4.0000","status":"0"},{"id":"5","name":"loc22","photo":"loc22.jog","description":"locatie 22","FK_Game_id":"2","lat":"51.2330","long":"40.2222","status":"1"}]},{"id":"3","name":"aa","photo":"photo3.jPg","description":"aa","length":"aa","totalDownloads":"0","totalFinished":"3","locations":[{"id":"4","name":"loc4","photo":"loc4.jpg","description":"loc4","FK_Game_id":"3","lat":"51.2191","long":"4.4021","status":"0"}]}]}';

преобразовать его в объект, используя

var result = eval(evt.target.result);

, тогда вы можете дать

var games = dataObject.games;
for(var i = 0; i< games.length; i++){
     var game = games[i];
     // then access properties games.id, games.name, games.photo ... etc..
}
0 голосов
/ 19 января 2012

Это работает, поэтому может иметь отношение к тому, как вы читаете файл.Что вы видите в console.log(evt.target.result);?

var g = {"games":[{"id":"2","name":"bartje","photo":"photo2.png","description":"kimpe","length":"is","totalDownloads":"0","totalFinished":"0","locations":[{"id":"3","name":"loc21","photo":"loc21.jpg","description":"loc21","FK_Game_id":"2","lat":"51.0000","long":"4.0000","status":"0"},{"id":"5","name":"loc22","photo":"loc22.jog","description":"locatie 22","FK_Game_id":"2","lat":"51.2330","long":"40.2222","status":"1"}]},{"id":"3","name":"aa","photo":"photo3.jPg","description":"aa","length":"aa","totalDownloads":"0","totalFinished":"3","locations":[{"id":"4","name":"loc4","photo":"loc4.jpg","description":"loc4","FK_Game_id":"3","lat":"51.2191","long":"4.4021","status":"0"}]}]}

alert(g.games[0].id) --> "2"

alert(g.games[0].locations[0].name) --> "loc21"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...