-3

json ノードを含む js ファイルがあります。このファイルはプログラムに文字列として読み込まれ、JSON.parse を実行します。

var client = new XMLHttpRequest();
client.open('GET', 'data/data.js');

//when the file has been loaded, this will execute 
client.onreadystatechange = function() 
{
    if(client.responseText != "")
    {
        ScanText(client.responseText);
    }
}
function ScanText(text)
{
    var json;
    try
    {
        var cleanedText = text;
        cleanedText = cleanedText.replace('Var', '');
        cleanedText = cleanedText.replace('arrayName', '');
        cleanedText = cleanedText.replace('=','')

        alert(cleanedText);
        json = JSON.parse(cleanedText);  //Issue happens here
        alert('try');
    }
    catch (ex)
    {
        alert(ex);
    }   
}

私のデータファイルは次のようになります。

[

{
AollName:'YUI678',
Contract:'123-33'
},
{
TollName:'YUI678',
Contract:'123-33'
}
]

最初のノード AollName に由来する「構文エラー: 予期しないトークン A」というエラーが表示されます。

この入力で json.parse メソッドを実行できないのはなぜですか?

4

2 に答える 2

2

ファイルに有効なJSONが含まれていません。

JSON キーは引用符で囲む必要があり、文字列値は二重引用符を使用する必要があります。有効な JavaScript オブジェクトとして実行される可能性があるからといって、それが有効な JSON (データ交換形式) であるとは限りません。

[
    {
        "AollName": "YUI678",
        "Contract": "123-33"
    },
    {
        "TollName": "YUI678",
        "Contract": "123-33"
    }
]

有効です。

于 2013-09-04T14:59:21.207 に答える
2

無効な JSON を使用しています。文字列は二重引用符で囲む必要があります。

[
    {
        "AollName": "YUI678",
        "Contract": "123-33"
    },
    {
        "TollName": "YUI678",
        "Contract": "123-33"
    }
]

ワークフローにJSONLintを追加します。

于 2013-09-04T15:00:43.303 に答える