ホームページ >ウェブフロントエンド >jsチュートリアル >json.stringify() は何をするのでしょうか?

json.stringify() は何をするのでしょうか?

青灯夜游
青灯夜游オリジナル
2020-12-16 16:08:0517111ブラウズ

json.stringify() は、JavaScript オブジェクトまたは値を JSON 文字列に変換するために使用されます。置換関数が指定されている場合、値はオプションで置換できます。または、指定された置換関数が配列の場合、値は配列で指定された属性のみが含まれます。

json.stringify() は何をするのでしょうか?

関連する推奨事項: 「JavaScript ビデオ チュートリアル

JavaScript JSON.stringify()

JSON.stringify() メソッドは、JavaScript 値を JSON 文字列に変換するために使用されます。

構文

JSON.stringify(value[, replacer[, space]])

パラメータの説明:

値: 必須、変換される JavaScript 値 (通常はオブジェクトまたは配列)。

replacer: オプション。結果の変換に使用される関数または配列。

  • replacer が関数の場合、JSON.stringify はその関数を呼び出し、各メンバーのキーと値を渡します。元の値の代わりに戻り値を使用します。この関数が未定義を返した場合、メンバーは除外されます。ルート オブジェクトのキーは空の文字列「"」です。

  • replacer が配列の場合、配列内のキー値を持つメンバーのみが変換されます。メンバーは配列内のキーと同じ順序で変換されます。

space: オプションで、テキストにインデント、スペース、改行が追加されます。スペースが数値の場合、戻り値のテキストは各レベルで指定されたスペース数だけインデントされます。スペースの場合は、 10 より大きい場合、テキストはスペース 10 個分インデントされます。スペースには、\t などの数字以外の文字も使用できます。

戻り値:

JSON テキストを含む文字列を返します。

例の説明

注: 以下の出力結果はすべて文字列型です。読みやすくするために、一重引用符 ' ' は、文字列型

1 であることを示すために使用されません。パラメータは 1 つだけです

パラメータはオブジェクトです:

var students = new Array();
students[0] = "pika";
students[1] = "hello";
students[2] = "hey";
var json = JSON.stringify(students);
alert(json);

出力結果:

["pika","hello","hey"]

JSONを使用しない場合は、.stringify()関数で直接アラート(生徒)に通知し、

出力結果:

pika,hello,hey

ここから比較まではより直感的に行うことができますJSON.stringify() 関数の役割を参照してください

他の例を見てください:

JSON.stringify({});                        // 输出结果:{}
JSON.stringify(true);                      // 输出结果:true
JSON.stringify("foo");                     // 输出结果:"foo"
JSON.stringify([1, "false", false]);       // 输出结果:[1,"false",false]
JSON.stringify({ x: 5 });                  // 输出结果:{"x":5}

JSON.stringify({x: 5, y: 6});              
//输出结果:{"x":5,"y":6}

JSON.stringify([new Number(1), new String("false"), new Boolean(false)]); 
//输出结果:[1,"false",false]

次の例からわかります: ブール値、数値、および文字列パッケージ化オブジェクトは自動的に変換されますシリアル化プロセス中に対応する元の値に変換します。

他の例を見てください:

JSON.stringify({x: undefined, y: Object, z: Symbol("")}); 
// 输出结果:{}

JSON.stringify([undefined, Object, Symbol("")]);          
// 输出结果:[null,null,null]'

JSON.stringify({[Symbol("foo")]: "foo"});                 
// 输出结果:{}

JSON.stringify({[Symbol.for("foo")]: "foo"}, [Symbol.for("foo")]);
// 输出结果:{}

JSON.stringify(
    {[Symbol.for("foo")]: "foo"}, 
    function (k, v) {
        if (typeof k === "symbol"){
            return "a symbol";
        }
    }
);
//输出结果:undefined

これらの例からわかるように、未定義の任意の関数とシンボル値はシリアル化プロセス中に無視されます。シリアル化プロセス (配列以外のオブジェクトの属性値に表示される) または null に変換される (配列に表示される場合)

最後の例をもう一度見てください

JSON.stringify( 
    Object.create(
        null, 
        { 
            x: { value: 'x', enumerable: false }, 
            y: { value: 'y', enumerable: true } 
        }
    )
);

As例からわかります: 列挙不可能なプロパティは無視されます

2. 2 つのパラメーターがあります。2 番目のパラメーターは関数です。

関数の例:

 function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

キー値とバリュー値があることがわかります。最初に述べたことを思い出してください。2 番目のパラメーターはキー値として使用されますか?

例:

function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer);
//输出结果:{"week":45,"month":7}

は、最初の値を関連処理の関数に渡します

2。パラメータが 2 つあり、2 番目のパラメータは配列

最初のパラメータは配列です

var students = new Array();
students[0] = "pika";
students[1] = "hello";
students[2] = "hey";
var stu= new Array();
stu[0] = "how";
stu[1] = "are";
stu[2] = "u";
var json = JSON.stringify(students,stu);
alert(json);
//输出结果:["pika","hello","hey"]

結果として、最初の値のみがシリアル化され、2 番目の値は無視されます

最初のパラメータは値ですオブジェクトの

var students = new Object();
students.name = "pika";
students.age = 19;
students.qq = "12345678";
var stu= new Array();
stu[0] = "name";
stu[1] = "qq";
var json = JSON.stringify(students,stu);
alert(json);
//输出结果:{"name":"pika","qq":"12345678"}

配列は、JSON文字列にシリアル化される属性名を表します

stu配列には「年齢」がないため、studentsオブジェクトの「年齢」属性は次のようになります。表示されません

パラメータは 3 つあります

#前述したように、3 番目のパラメータはシリアル化されたオブジェクトの前に文字列をインデントするか直接追加するために使用されます。この例では、インデントまたは文字は最大 10 個であることに注意してください。

JSON.stringify({ a: 2 }, null, " ");   
// 输出结果:{\n "a": 2\n}

JSON.stringify({ uno: 1, dos : 2 }, null, '\t')
/* 输出结果:
{
    "uno": 1,
    "dos": 2
}
*/

var students = new Object();
students.name = "pika";
students.age = 19;
students.qq = "12345678";
var stu= new Array();
stu[0] = "name";
stu[1] = "qq";
var json = JSON.stringify(students,stu,"test")
alert(json);
/* 输出结果:
{
test"name": "pika",
test"qq": "12345678"
}
*/

概要

最後に、JSON.stringify( ) 関数はオブジェクトをシリアル化するために使用されます はい、入力が何であっても、出力は文字列型です。シリアル化の方法と出力結果の形式は、必要に応じてカスタマイズできます。プログラミング関連の知識については、

プログラミング学習

をご覧ください。 !

以上がjson.stringify() は何をするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。