Сравните два вложенных объекта json rails 3 - PullRequest
2 голосов
/ 05 января 2012

Я работаю с рельсами 3 и использую act_as_tree. Как я могу перебрать вложенный json, чтобы найти разницу между двумя узлами?

JSON, который я хочу сравнить, выглядит так:

{    
    "text": "To Do",
    "children": [{
        "text": "Go jogging",
        "children":[]
    }, {
        "text": "Take a nap",
        "children":[]
    }]
 }

и

 {    
     "text": "To Do",
     "children": [{
         "text": "Climb Everest",
         "children":[]
     }]
 }

Ответы [ 3 ]

2 голосов
/ 07 октября 2014

Пожалуйста, посмотрите https://rubygems.org/gems/json-compare

Можно сделать что-нибудь, чтобы получить разницу:

require 'yajl'
require 'json-compare'

json1 = File.new('spec/fixtures/twitter-search.json', 'r')
json2 = File.new('spec/fixtures/twitter-search2.json', 'r')
old, new = Yajl::Parser.parse(json1), Yajl::Parser.parse(json2)
result = JsonCompare.get_diff(old, new)
1 голос
/ 22 ноября 2014

Как уже упоминал OhadR, десериализация и сравнение объектов представляется жизнеспособным способом.

Для этого проверьте этот драгоценный камень:

https://github.com/liufengyun/hashdiff

Он даже имеет онлайн-демонстрацию для сравнения структур JSON и YAML и демонстрации различий.

1 голос
/ 05 января 2012

показ различий - я думаю, вам нужно десериализовать JSON в структуры и сравнить объекты. Это кажется мне самым простым способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...