2013-10-02 74 views
1

我必须为空两个JSON对象:比较JSON结构红宝石

obj1= [ { "id": 4, "userId": "abc", "firstName": "abc", "lastName": "abc", "email": "[email protected]", "prefers" : [{"breakfast" : "bread" , "lunch" : "non-veg"}] } ] 

obj2= [ { "id": 5, "userId": "def", "firstName": "def", "lastName": "def", "email": "[email protected]", "prefers" : [{"breakfast" : "egg" , "lunch" : "veg"}] } ] 

由于这些对象我要验证对象2具有相同的密钥object1

diff(obj1,obj2)应该给我丢失的钥匙

+0

您需要创建一个递归方法来收集所有的键,然后使用'Array#-'方法。 –

回答

0

keys使用返回散列键的阵列,然后减去它们

obj1[0].keys - obj2[0].keys 
# => array of missing keys 
+0

感谢您的回复我已经为ruby中的两个对象完成了JSON.parse,它返回的数组并不是对象 – user1896766

+0

不应该是obj1 [0] .keys,因为obj1和obj2是数组吗? –

+0

@ user1896766您是否希望比较值中的键以及'lunch'? – tihom

0

Ruby JSON comparator将告诉你如何做到这一点。它旨在比较这两个对象,如果它们相同,则返回true,但是可以根据您的需要设计更复杂的返回值。