7

ユーザーが 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 パーサーがこの機能を提供する場合は、代わりにそれを使用できます。

4

2 に答える 2

3

ええ、締め切りのある生活は決して簡単ではありません:)。

数時間グーグルで調べた後、Git Hubでjsonlintを見つけました。それは有望に見え、サーバー側で使用できるシェルスクリプトが含まれており、まさにあなたが探していたものと思われるブラウザー JavaScriptバージョンがあります。

これがお役に立てば幸いです。

于 2012-12-01T07:02:10.200 に答える