JSON.parse()とJSON.stringify()とのeval()メソッドは、詳細な使用します

そして、インターフェースの後端部には、問題が発生したとき

これは、時系列データ変数スプライシングは、すべての数値データ型intのあるデータ

要件のいくつかは彼にいくつかのデータを取得する必要がありますので、しかし、データが空になる前に

私は、空の文字列と、未定義とnullにしようとした、NaNは動作しません。

その後、私は偉大な神を尋ね、彼は文字列解析のJSONを読んだ後にevalを使用する必要があり、この方法はJSON.parseを使用できないことを私に言った私を助けました

私たちは、参照参考のために一緒にいた、インターネットから関連する方法で検索しました

PS:かなり役に立たないモザイクエスケープシンボルがあるときは、複数のネストされた二重引用符が必要な場合、\これは「\」「この方法することができます

出典:https://www.php.cn/js-tutorial-394185.html

 

 

「JSON(JavaScriptの  オブジェクト表記)は、軽量のデータ交換フォーマットです。言語に依存しないテキスト形式の使用は、また、Cの家族の習慣に似た言語を使用するので、それはこれらの特性を持つ、ECMAScriptのサブセットに基づいています言語関数上でJSONデータ交換を行うこと(一般的にネットワークの伝送速度を向上させるために使用される)の読み取りおよび書き込みするのは簡単ですが、マシンを生成し、解析することも簡単です。」  

ここでは、今日は私が簡単にJSON.parse()とJSON.stringify()関数内ではjQueryについてお話したいと思い、方法は()関数evalの中で、ネイティブのJSの方法になります

(1)JSON.parse関数

効果:JavaScriptのObject Notation(JSON)形式  の文字列オブジェクトに。  

構文:JSON.parse(テキスト[、リバイバー])

パラメータ:

テキストが必要。有効なJSON文字列。

オプションのリバイバー。変換関数の結果。この機能は、各メンバーのオブジェクトのために呼ばれています。
戻り値:オブジェクトまたは配列

例:

 

1

2

3

var json = '{"name":"GDT","age":,"University":"GDUT"}';

var info = JSON.parse(json);  //解析为JSON对象

document.write(info.name + ' is a student of ' + info.University + ' and he is ' + info.age + " years old."); /info为Object对象

(2)JSON.stringify()関数

効果:JavaScriptの値はJavaScript Object Notation(JSON)形式の文字列に

语法:JSON.stringify(値[、代用] [スペース])

パラメータ:

必要な値、典型的には、JavaScriptの値は、(典型的には、オブジェクトまたは配列)に変換します

あるいは代替、またはその配列に変換するための関数

スペースオプション。インデントテキスト、スペースやラインにJSONの戻り値を追加すると、読みやすくするために分割します。

戻り値:テキストJSONを含む文字列

例:

1

2

3

var info = {name:"GDT",age:,University:"GDUT"};

var json = JSON.stringify(info); //转换为JSON字符串

document.write(json); //output为{"name":"GDT","age":23,"University":"GDUT"}

(3)のeval()関数

アクション:evalの()関数は、文字列を計算し、JavaScriptコードを実行します。

構文:evalの(文字列)

パラメータ:

必要な文字列は、JavaScriptを含む計算する、計算する文字列  表現文をまたは実行します。

戻り値:文字列の計算値、もしあれば、(ではない、その後変更せずに返します)

例:

1

2

3

4

eval("x=;y=;document.write(x*y)"); //output为

document.write(eval("+"));  //output为

var x=;

document.write(eval(x+));  //output为

ここにフォーカス:

 ()関数はオブジェクトのJSON文字列に解決することができる、この関数はJSON.parse()関数を完了することができますevalのを使用して、次のコードを検討し、同じ場所にはなく、

1

2

3

4

5

6

7

8

// JSON.parse()

var json = '{"name":"GDT","age":,"University":"GDUT"}';

var info = JSON.parse(json);    //解析为JSON对象

document.write(info); //output为[object Object]

//eval()

var json = '{"name":"GDT","age":,"University":"GDUT"}';

var info = eval('(' + json + ')'); //解析为JSON对象

document.write(info); //output为[object Object]

あなたは()だけでなく、私はより良い説明がある見つける括弧文字列の折り返し、一対の木製のevalのに気づいた場合、私は知りません。

理由:最初と最後のウェイJSON「{}」で、JSで、それは文のブロックとして処理され、表現に変換するために必須であるため、原因の問題に自分自身をevalのスタイル。

溶液:括弧目的にではなくステートメント(文)として、オブジェクトのJavaScriptコード変換を処理するときに実行する括弧内の式(式)を強制的に評価関数を強制することです。それは外側のブラケットを増加させない場合の例として、リテラル{}オブジェクトのような、ブレースは、次に、JavaScriptコードブロックとして識別evalの開始タグと終了タグは、その後、{}実行空のステートメントであると考えるであろう。

異なるの次の例を考えてみましょう

1

2

alert(eval("{}")); // return undefined

alert(eval('('+'{}'+')')); // return object[Object]

  また、書かれたフォーマット厳しいJSON.parse()に関して、よりリラックスしたevalは、潜在的なセキュリティ上の問題が存在しますので、evalの()、evalが安全ではない任意の文字列を解析することができ、ありますたとえば、次のコード:

1

2

3

4

var str = '{"a":"b"}';

document.write(eval("("+str+")")); //正常解析为对象

var str = '{"a": (function(){alert("I can do something bad!");})()}';

eval('('+str+')'); //可以用来执行木马脚本

  悪意のあるユーザーがトロイの木馬がページにリンクJSONスクリプト挿入の文字列を注入する場合は、evalの操作を使用することができますが、JSON.parse()で、あなたがこの問題、心配する必要はありませんのeval()関数は非常に強力ですが、目に見えるが、実際の機会は多くありませんを使用します。

おすすめ

転載: www.cnblogs.com/huchong-bk/p/11459017.html