ホームページ >ウェブフロントエンド >jsチュートリアル >JS操作の詳細な概要 JSON_javascriptスキル
JSON 文字列を JS の JSON データ形式に解析するには、通常 2 つの方法があります。
1. 1 つは eval_r() 関数を使用することです。
2. Function オブジェクトを使用してリターン分析を実行します。
データ送信プロセスでは、json はテキスト、つまり文字列の形式で送信され、JS は JSON オブジェクトに対して動作するため、JSON オブジェクトと JSON 文字列間の変換が鍵となります。例:
JSON 文字列:
var str1 = '{ "名前": "cxh", "性別": "男" }';
JSON オブジェクト:
var str2 = { "name": "cxh", "sex": "man" };
最初の解決策:
var dataObj=eval_r("(" data ")");//json オブジェクトに変換
eval を追加する理由"("(" データ ")");// ここは?
理由は、eval 自体の問題です。 jsonは「{}」で始まり最後が「{}」で終わるため、JSではステートメントブロックとして処理されるため、強制的に式に変換する必要があります。
かっこを追加する目的は、JavaScript コードの処理時に、かっこ内の式をステートメントとして実行するのではなく、eval 関数で強制的にオブジェクトに変換することです。たとえば、オブジェクト リテラル {} を考えます。外側の大括弧が追加されていない場合、eval はその中括弧を JavaScript コード ブロックの開始マークと終了マークとして認識し、{} は空のステートメントを実行するとみなします。したがって、次の 2 つの実行結果は異なります:
alert(eval_r("{}"); // return unknown
alert(eval_r("({})"); // return object[Object]
この種の記述は JS のいたるところで見られます。
例: (function()) {}(); クロージャー操作などを行う場合。
var str1 = '{ "name": "cxh", "sex": "man" }';
var data=eval_r("(" str1 ")");//json オブジェクトに変換/ /data =(new
alert (data.name);//cxh
ここで特別な注意が必要なのは、メソッド 1 の eval_r() メソッドが文字列 (おそらく js スクリプト) を動的に実行するため、システム セキュリティの問題が簡単に発生する可能性があることです。したがって、eval_r() を回避するサードパーティのクライアント スクリプト ライブラリを使用できます。たとえば、JavaScript の JSON は 3K 未満のスクリプト ライブラリを提供します。
2 番目の解決策:
2 番目の解析方法は、Function オブジェクトを使用することです。その典型的なアプリケーションは、JQUERY の AJAX メソッドで成功することです。返されたデータ data
var str1 = '{ "name": "cxh", "sex": "man" }';
var data = (Function("","return " str1) )() ;
alert (data.name);//cxh