ユーザーが JSON 形式でデータをロードできる Web アプリケーションを作成しています。現在、次の関数を使用して、ローカル ディスクに保存した JSON ファイルを読み取っています。
function retrieveJSON(url, callback)
{
// this is needed because FireFox tries to parse files as XML
$.ajaxSetup({ mimeType: "text/plain" });
// send out an AJAX request and return the result
$.getJSON(url, function(response) {
console.log("Data acquired successfully");
callback(response);
}).error(function(jqXHR, textStatus, errorThrown) {
console.log("Error...\n" + textStatus + "\n" + errorThrown);
});
}
これは、整形式の JSON データに対して完全に機能します。ただし、不正なデータの場合、コンソール ログには次のように表示されます。
Error...
parsererror
SyntaxError: JSON.parse: unexpected character
これは、予期しない文字が何であるか、またはそれが何行目にあるかがわからないため、ほとんど役に立ちません。JSON バリデーターを使用してローカル ディスク上のファイルを修正できますが、ページが Web 上のリモート URL からファイルをロードしている場合、これはオプションではありません。
エラーの場所を取得するにはどうすればよいですか? できればトークンを取得したいのですが、最低限行番号を取得する必要があります。JSON コードの抜粋をユーザーに表示し、エラーが発生した行を強調表示するプロジェクト要件があります。
私は現在 jQuery を使用していますが、jQuery はプロジェクトの要件ではないため、別の API または JSON パーサーがこの機能を提供する場合は、代わりにそれを使用できます。