0

ユーザーデータをJSON形式でファイルに保存する必要があるプログラムに取り組んでいます。データを JSON として正常に保存していますがJSON.parse、保存した JSON を解析しようとすると機能しません。データを保存するための私のコードは次のとおりです。

function writeUser(data) {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs){
        fs.root.getFile('user.data', {create: true, exclusive: false}, function(fe){
            fe.createWriter(function(writer){
                //Its converts my data to JSON here
                writer.write(JSON.stringify(data));
                //It displays this so I knows its been written!
                console.log('File written');
            }, failwrite);
        }, failwrite);
    }, failwrite);
}
function failwrite(error) {
    console.log(error.code);
}

そして、これが私のデータを読み取るコードです:

function readUser(){
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs){
        fs.root.getFile('user.data', null, function(fe){
            fe.file(function(file){
                return readAsText(file);
            }, failread);
        }, failread);
    }, failread);
}
function readAsText(file) {
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log(evt.target.result);
    };
    return reader.readAsText(file);
}

それは私のデータを文字列としてうまく返します.これは私が文字列として得るものです{"status":"true","id":"1","password":"xx"}.しかし、データでJSON.parseを使用すると、未確認のオブジェクトが返されます. 使用する部分は次のJSON.parseとおりです。

readUser();
var user = JSON.parse(readUser());
console.log(user);

解析された JSON を使用して console.log コマンドを実行することすらできません。

4

2 に答える 2

2

readUser は何も返しません。ファイルの内容は readAsText コールバックで利用できます。evt.target.result を json 解析して、そこから続行する必要があります。

于 2013-02-16T09:29:52.220 に答える
2

読書用:

jsonVariable = jQuery.parseJSON(evt.target.result);

書き込み用:

writer.write(JSON.stringify(propFileJson));
于 2014-02-11T18:15:27.563 に答える