現在Monacaを使用してアプリ開発を行っております。
JavaScriptで以下のような連想配列を書き、この内容(var hairetsuの内容)をそのままファイルAPIを用いて外部テキストファイル(.txt)へ書き出しました。このテキストファイルの内容を再度読み込み、下記2つ目のコードのようにして内容を取り出そうとしたのですが、配列として認識されていない?ようでして、データを取り出すことができません。
テキストファイルから読み込んだ配列をalertで表示させると、正しく以下の文字列が表示されますので、テキストファイルに書き出し・読み込みを行うと配列として認識できなくなるものなのか、またその場合はどのようにすれば配列データとして扱えるようにできるかお教え頂けると助かります。
なお、テキストファイルへではなく、LocalStorageに保存・読み込みする分には配列として認識されます。
よろしくお願いいたします。
var hairetsu = {data:[ { 'aaa': 'いいい', 'uuu': 'えええ' }, { 'kakaka': 'ききき', 'kukuku': 'けけけ' }, ]};
2つ目のコード↓
var result = hairetsu.data[0].aaa; alert(result); // 「いいい」
このようなfor文を書いても、「hairetsu.data.length」が認識されていないようで、ここで処理が止まってしまう状況です↓
for (var i = 0; i < hairetsu.data.length; i++){ }
【追記】
外部テキストファイルへの書き出し・読み込み部分のコードです。
// 外部テキストファイルに保存 function hairetsuSave(){ var hairetsu = JSON.parse(localStorage.getItem('hairetsu')); // LocalStorageに保存した連想配列を読み込む window.resolveLocalFileSystemURL('cdvfile://localhost/persistent/', function(dir){ dir.getFile("hairetsu.txt", {create: true}, function (entry) { entry.createWriter(function (writer) { writer.write(hairetsu); }, function (error) { window.alert("書込失敗 :" + error.code + " - " + message); }); }, function (error) { window.alert("書込失敗 :" + error.code + " - " + message); }); }, function(error){ window.alert("書込失敗 :" + error.code + " - " + message); } ); } // 外部テキストファイルから読み込み function hairetsuLoad() { var filename = 'hairetsu.txt'; var folderurl = cordova.file.documentsDirectory; window.resolveLocalFileSystemURL( folderurl , function getDirectoryEntry( directoryEntry ) { directoryEntry.getFile( filename, null, function readFile( fileEntry ) { fileEntry.file( function( file ) { var reader = new FileReader(); reader.onloadend = function() { alert("テキストファイルから読み込んだ配列: " + this.result); // this.result=連想配列、これが認識されない displayFileData(fileEntry.fullPath + ": " + this.result); }; reader.readAsText(file); }, function fail(e) { } ); }, function fail(e) { } ); }, function fail(e) { } ); }
回答1件
あなたの回答
tips
プレビュー