Десериализация JSON в Ruby - PullRequest
       29

Десериализация JSON в Ruby

0 голосов
/ 22 декабря 2018

Существует ли десериализация JSON, эквивалентная Java JSON Google в Ruby.Без необходимости определения любого пользовательского сериализатора или десериализатора для каждого класса можно написать однострочный код для преобразования строки JSON в пользовательский класс Java, как показано здесь ниже.

Address address=gson.fromJson(addressJsonStringForm, Address.class);

Для этого не нужно помещать аннотации / интерфейсы в класс Address или писать отдельную утилиту Deserializer для каждого класса, который нам нужно десериализовать,Это позволяет очень легко десериализовать / сериализовать классы из сторонних библиотек.Существует довольно много вариантов того, следует ли сериализовать пустые значения / включить / исключить определенные атрибуты и т. Д. Я ищу такую ​​универсальную JSON-утилиту для пользовательской сериализации / десериализации объектов в Ruby.Я новичок в Ruby.

Ссылка:

https://dzone.com/articles/deserializing-json-java-object

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

jsonapi-rb

DeserializablePost.call(json_hash)

рев

song = Song.new(title: "Medicine Balls")
SongRepresenter.new(song).from_json('{"title":"Linoleum"}')
song.title #=> Linoleum
0 голосов
/ 23 декабря 2018

Вы можете преобразовать его в Hash, используя модуль JSON:

require 'json'

hash = JSON.parse('{"age":18, "name":"Vinicius"}')
hash["age"]
=> 18

Если вы хотите преобразовать его в «структурированный» объект, вы можете использовать OpenStruct:

require 'json'
require 'ostruct'

person = JSON.parse('{"age":18, "name":"Vinicius"}', object_class: OpenStruct)
person.name
=> "Vinicius"

OpenStruct - это структура данных, похожая на Hash, которая позволяет определять произвольные атрибуты с их сопровождающими значениями.Это достигается с помощью метапрограммирования Ruby для определения методов самого класса. (документы)

OpenStruct может помочь вам, если вы не всегда знаете ключи JSON, поскольку он динамически создает объект.

...