【问题标题】:Compare JSON structure in ruby比较 ruby​​ 中的 JSON 结构
【发布时间】:2013-10-02 07:40:34
【问题描述】:

我有两个json对象如下:

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

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

鉴于这些对象,我必须验证 object2 具有与 object1 中相同的键

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

【问题讨论】:

  • 您需要创建一个递归方法来收集所有密钥,然后使用Array#- 方法。

标签: ruby-on-rails ruby json


【解决方案1】:

使用keys返回哈希键的数组,然后将它们相减

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

【讨论】:

  • 感谢您的回复,我已经为 ruby​​ 中的两个对象完成了 JSON.parse,它返回数组而不是对象
  • 不应该是obj1[0].keys,因为obj1和obj2是数组吗?
  • @user1896766 您是否也希望比较值内的键,例如lunch?
【解决方案2】:

Ruby JSON comparator 将向您展示如何操作。它旨在比较两个对象,如果它们相同则返回 true,但您可以根据需要设计更复杂的返回值。

【讨论】:

    【解决方案3】:

    如果您只想验证两个对象的键是否匹配,则可以这样做:

    object1.keys && object2.keys == object1.keys
    

    这会给你一个匹配与否的验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多