javascript で、同じ値のオブジェクトならば必ず同じ文字列になる stringify はどうやったら記述できる?

投稿者: Anonymous

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#Issue_with_plain_JSON.stringify_for_use_as_JavaScript

上記 javascript の、 JSON.stringify を見ていたのですが、そこで以下のような記述がありました。

配列以外のオブジェクトのプロパティでは、特定の順番で文字列化されることは保証されていません。文字列化された同じオブジェクトの中でプロパティの順番に依存しないようにしてください。

例えば、 stringify の結果を KVS のキーにしたいような場合、この性質はあまりいいものではありません。

質問

  • 同じ構造的な値を表す2つのオブジェクトが、同一の JSON 文字列に変換されるような stringify を実現するライブラリや手法などには、どのようなものがありますか?

解決

json-stable-stringify をお探しではありませんか?

https://www.npmjs.com/package/json-stable-stringify

> var stringify = require('json-stable-stringify');
undefined
> var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 };
undefined
> stringify(obj);
'{"a":3,"b":[{"x":4,"y":5,"z":6},7],"c":8}'
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *