Skip to content
This repository has been archived by the owner on Jan 7, 2025. It is now read-only.

crystal-lang/json_mapping.cr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Important

This library is no longer supported or updated by the Crystal Team, therefore we have archived the repository.

The contents are still available readonly and continue to work as a shards dependency.

If you wish to continue development yourself, we recommend you fork it. We can also arrange to transfer ownership.

If you have further questions, please reach out on on https://forum.crystal-lang.org or [email protected]

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

  1. Add the dependency to your shard.yml:
dependencies:
  json_mapping:
    github: crystal-lang/json_mapping.cr
  1. 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}}])

About

Provides the legacy `JSON.mapping` macro method

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published