1

ローカルストレージを変更しようとして、多くの時間を失っています。

最初はこのように開始します

localStorage.setItem('bipme','{"modules": []}');

それは機能しますが、この例が必要であることを知っています

{
    "modules" : [
        {
            "id" : "0",
            "pseudo" : "Titi",
            "mode" : "gps",
            "perimetre" : "3",
            "distance" : "1",
            "start" : "2012-09-23 08:00:00",
            "refresh" : "08:20:00",
            "last" : "2012-09-23 08:00:00"
        },
        {
            "id" : "1",
            "pseudo" : "Toto",
            "mode" : "phone",
            "perimetre" : "10",
            "distance" : "0",
            "start" : "2012-09-23 08:00:00",
            "refresh" : "08:20:00",
            "last" : "2012-09-23 08:00:00"
        },
        {
            "id" : "2",
            "pseudo" : "Tete",
            "mode" : "gps",
            "perimetre" : "5",
            "distance" : "5",
            "start" : "2012-08-23 08:00:00",
            "refresh" : "10:20:00",
            "last" : "2012-09-23 08:00:00"
        }
    ],
    "modulesIndex" : 0,

    "watchPosition" : [
        {
            "id" : "0",
            "pseudo" : "Antoine",
            "phone" : "+41781234567",
            "date" : "2012-05-01 17:20:00"
        },
        {
            "id" : "1",
            "pseudo" : "Barbara",
            "phone" : "+41781234567",
            "date" : "2012-05-27 17:20:00"
        }
    ]
}

次に、これを試しました

localStorage.setItem('bipme','{"modules":[]},{"modulesIndex":0},{"watchPosition":[]}');

しかし、今では常にこのエラーメッセージが表示されます

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
[Break On This Error]   

var objJSON = JSON.parse(localStorage.getItem('bipme'));

次に、ローカルストレージを正しく開始するにはどうすればよいですか

感謝

4

2 に答える 2

1

保存したいオブジェクトにJSON stringifyを使うのが設計パターンです。例えば:

var objs = {
  modules : [
    {
        "id" : "0",
        "pseudo" : "Titi",
        "mode" : "gps",
        "perimetre" : "3",
        "distance" : "1",
        "start" : "2012-09-23 08:00:00",
        "refresh" : "08:20:00",
        "last" : "2012-09-23 08:00:00"
    }]
};
localStorage.setItem('bipme', JSON.stringify(objs));
于 2012-12-27T05:35:56.483 に答える
0

そこには複数のオブジェクトがあります。それが必要な場合は、配列に角括弧を使用する必要があります。

localStorage.setItem('bipme','{"modules":[]},{"modulesIndex":0},{"watchPosition":[]}');
// Should be:
localStorage.setItem('bipme','[{"modules":[]},{"modulesIndex":0},{"watchPosition":[]}]');

などを同じオブジェクトの一部にするつもりならmodulesIndex、単にオブジェクトを閉じないでください:

localStorage.setItem('bipme','{"modules":[],"modulesIndex":0,"watchPosition":[]}');

コメントですでに解決していると思います。

于 2012-12-25T21:34:31.237 に答える