2 番目のパラメーターが関数の場合、動作は少し異なります。渡された関数は、属性 (キー) 名と属性値の 2 つのパラメーターを受け取ります。属性 (キー) 名に基づいて、シリアル化するオブジェクト内の属性を処理する方法を知ることができます。プロパティ名には文字列のみを使用できます。
シリアル化されたオブジェクトの結果を変更するには、関数によって返される値が、対応するキーの値になります。ただし、関数が未定義を返した場合、対応するプロパティは無視されることに注意してください。例:
"button" onclick ="init()" value="Test" />
この関数はキーに基づいてフィルタリングします。結果として合格しました。キーが name の場合、その値を Lily に設定します。grade の場合は、属性を削除するために未定義を返します。subject の場合は、配列メソッド join( によってカンマで接続された文字列に変換されます)。 )。最後に、他の値が結果に正常に表示されるようにデフォルト項目を指定する必要があります。そうしないと、エラーが発生し、結果が表示されません。実際、この関数フィルターが初めて呼び出されるとき、渡されるキーは空の文字列であり、値は Student オブジェクトです。上記の jsonText の値は次のとおりです:
{"name":"Lily","age":12,"id":"0802020114","subject":"math, Chinese,English"}
内部的には各オブジェクトの各属性を順番に走査するため、公開キーと値の関数メソッドを使用する場合、関数の目的を理解するには、関数が 2 つのパラメーターでのみ有効であることに注意する必要があります。内部メカニズムが各属性を走査するタイミングを通知するため、一部の結果を変更し、シリアル化されたオブジェクト内の各オブジェクトがフィルターを通過する必要があるように各オブジェクトを一度に走査します。
2. 文字列のインデント
JSON.stringify() メソッドの 3 番目のパラメーターは、結果のインデントと空白文字を制御するために使用されます。このパラメータが数値の場合、インデントの各レベルのスペースの数を表します。例: