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.