node.js で json オブジェクトを比較する方法のメモ
2つの json オブジェクトが一致しているかを比較するために、以下の compare メソッドを作成しました。
上記の compare メソッドで json の比較を行ってみます。
実行結果は以下の通り想定通りの結果となりました。
2つの json オブジェクトが一致しているかを比較するために、以下の compare メソッドを作成しました。
module.exports = class JsonUtil { static compare(obj1, obj2) { if (obj1 instanceof(Array)) { if (! (obj2 instanceof(Array))) return false; if (obj1.length != obj2.length) return false; for (let i = 0; i < obj1.length; i++) { const res = JsonUtil.compare(obj1[i], obj2[i]); if (! res) return false; } } else if (obj1 instanceof(Object)) { if (obj2 instanceof(Array) || ! (obj2 instanceof(Object))) return false; if (Object.keys(obj1).length != Object.keys(obj2).length) return false; for (let [key, val1] of Object.entries(obj1)) { const val2 = obj2[key]; const res = JsonUtil.compare(val1, val2); if (! res) return false; } } else if (obj1 !== obj2) { return false; } return true; } }
上記の compare メソッドで json の比較を行ってみます。
const JsonUtil = require('JsonUtil'); console.log(JsonUtil.compare('abc', 'abc')); console.log(JsonUtil.compare([1, 2, 3], [1, 2, 3])); console.log(JsonUtil.compare({"a": 1, "b": 2}, {"a": 1, "b": 2})); console.log(JsonUtil.compare({"a": 1, "b": 2}, {"a": "1", "b": "2"}));
実行結果は以下の通り想定通りの結果となりました。
true true true false