json_mapping
json_mapping
Provides the legacy JSON.mapping
macro method.
This shard is provided as-is and considered deprecated. It won't receive feature enhancements.
Please consider using JSON::Serializable
instead, the successor included in Crystal's standard library.
Installation
- Add the dependency to your
shard.yml
:
dependencies:
json_mapping:
github: crystal-lang/json_mapping.cr
- Run
shards install
Usage
require "json_mapping"
class Location
JSON.mapping(
lat: Float64,
lng: Float64,
)
end
class House
JSON.mapping(
address: String,
location: {type: Location, nilable: true},
)
end
house = House.from_json(%({"address": "Crystal Road 1234", "location": {"lat": 12.3, "lng": 34.5}}))
house.address # => "Crystal Road 1234"
house.location # => #<Location:0x10cd93d80 @lat=12.3, @lng=34.5>
house.to_json # => %({"address":"Crystal Road 1234","location":{"lat":12.3,"lng":34.5}})
houses = Array(House).from_json(%([{"address": "Crystal Road 1234", "location": {"lat": 12.3, "lng": 34.5}}]))
houses.size # => 1
houses.to_json # => %([{"address":"Crystal Road 1234","location":{"lat":12.3,"lng":34.5}}])
Contributing
- Fork it (https://github.com/crystal-lang/json_mapping.cr/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request