4

次の JS コードを使用して、別の JS ファイルから JSON 文字列を解析しています。

// extract JSON from a module's JS
var jsonMatch = data.match( /\/\*JSON\[\*\/([\s\S]*?)\/\*\]JSON\*\// );
data = JSON.parse( jsonMatch ? jsonMatch[1] : data );

これは、JSON 文字列を抽出する JS ファイルの例です。

JsonString = /*JSON[*/{"entities":[{"type":"EntityPlayer","x":88,"y":138}]}/*]JSON*/;

このコードは問題なく動作しますが、JSON 文字列を含む JS ファイルにキャリッジ リターンが含まれていて、1 行に収まっていない場合は、構文エラーが発生します。

例:

JsonString = /*JSON[*/{
     "entities":[{
         "type":"EntityPlayer",
         "x":88,
         "y":138}]
     }/*]JSON*/;

次のエラーを返します。

JSON.parse: unexpected non-whitespace character after JSON data

空白を削除するか、改行と改行スペースを削除して、解析を変更して機能させる方法はありますか?

4

2 に答える 2

6
data = JSON.parse( (jsonMatch ? jsonMatch[1] : data).replace(/\n/g,"") );
于 2012-06-14T06:54:54.557 に答える
-1

それをテストしませんでしたが、これはあなたが探しているものですか?

var JsonString = JsonString.replace(new RegExp( "\\n", "g" ),"");

( http://www.bennadel.com/blog/161-Ask-Ben-Javascript-Replace-And-Multiple-Lines-Line-Breaks.htmから)

于 2012-06-14T06:45:18.430 に答える