40

(または同様のものを使用して) オブジェクトを文字列化する場合、文字列化のJSON.stringify深さを制限する方法があります。つまり、オブジェクト ツリーのnレベルだけ深く入り、その後に続くものはすべて無視します (または、プレースホルダーをそこに配置して、何かが残っていることを示します)。アウト)?

JSON.stringifyフォームの置換関数を取ることは知っていますが、置換関数にfunction (key, value)渡された現在のキーと値のペアの元のオブジェクトの深さを取得する方法が見つかりませんでした。

デフォルトの JSON.stringify 実装でこれを行う方法はありますか? それとも、文字列化を自分で実装する必要があるところまで来ましたか? または、このオプションを備えた、推奨できる別の文字列化ライブラリはありますか?

4

3 に答える 3

1

オブジェクトのディープ クローンを ( low-dashなどのライブラリを使用して) 作成し、必要なプルーニングを実行してから、JSON.stringify に渡します。私は JSON.stringify を再発明しようとはしません。それは間違った場所での努力です。

[編集]誰かがあなたが提案していたことをすでに行っているようです: JSON.stringify deep objects

ただし、ネイティブの JSON.stringify は常に高速で堅牢になるため、これはお勧めしません。

[編集]ここにあなたが望むことをするように見えるライブラリがあります: http://philogb.github.io/jit/static/v20/Docs/files/Core/Core-js.html# $jit.json.prune

于 2014-04-04T11:22:36.423 に答える