Shale - nowy gem który umożliwia mapowanie JSON-a, YAML-a i XML-a to obiektów Rubiego

Cześć, Shale jest gem-em który umożliwia parsowanie JSON-a, YAML-a i XML-a do obiektów rubiego,
oraz serializację obiektów do wspomnianych formatów.

Funkcje:

  • konwersja JSON-a, XML-a i YAML-a do obiektów Rubiego
  • serializacja obiektów do JSON-a, XML-a i YAML-a
  • generacja JSON Schema i XML Schema z Rubiego
  • generacja modeli Rubiego z JSON Schema (XML jest w trakcie rozwoju)

Szybki przykład co jest możliwe:

require 'shale'

class Address < Shale::Mapper
  attribute :street, Shale::Type::String
  attribute :city, Shale::Type::String
end

class Person < Shale::Mapper
  attribute :first_name, Shale::Type::String
  attribute :last_name, Shale::Type::String
  attribute :address, Address
end

# parse data and convert it into Ruby data model
person = Person.from_json(<<~JSON) # or .from_xml / .from_yaml
{
  "first_name": "John",
  "last_name": "Doe",
  "address": {
    "street": "Oxford Street",
    "city": "London"
  }
}
JSON

# It will give you
# =>
#  #<Person:0xa0a4
#    @address=#<Address:0xa0a6
#      @city="London",
#      @street="Oxford Street",
#      @zip="E1 6AN">,
#    @age=50,
#    @first_name="John",
#    @hobbies=["Singing", "Dancing"],
#    @last_name="Doe",
#    @married=false>

# serialize Ruby data model to JSON
Person.new(
  first_name: 'John',
  last_name: 'Doe',
  address: Address.new(street: 'Oxford Street', city: 'London')
).to_json # or .to_xml / .to_yaml

Pełna dokumentacja z przykładami jest dostępna na: https://www.shalerb.org/
Kod jest dostępny na GitHubie: GitHub - kgiszczak/shale: Shale is a Ruby object mapper and serializer for JSON, YAML and XML. It allows you to parse JSON, YAML and XML data and convert it into Ruby data structures, as well as serialize data structures into JSON, YAML or XML.