A strict json parser inspired by Swift Codable ❤️
Works almost same as Swift Codable, but with some extra implementation to fit TypeScript / JavaScript environment.
- Decodes
JSONpayload with pre-defined scheme.- Custom keys parsing.
- Strict types checking.
- Nested
Codableparsing.
Types design was inspired by MobX State Tree ❤️
- Primitives
- String
- Number
- Boolean
- Complex
- Codable
- Optional
- Array
- Date
yarn add @gorhom/codable
# or
npm install @gorhom/codableimport{BaseCodable,types,decode,encode}from'@gorhom/codable';importdayjsfrom'dayjs';classPostextendsBaseCodable{title!: string;isActive?: boolean;date!: Date;}Post.CodingProperties={title: types.string,isActive: {type: types.optional(types.boolean),key: 'active',},date: types.date(dayjs),};classUserextendsBaseCodable{id!: number;username!: string;posts!: Post[];}User.CodingProperties={id: types.number,username: types.string,posts: types.array(Post),};constjsonPayload={id: 123,username: 'Gorhom',posts: [{title: 'dummy post',active: true,date: '2020-02-15T16:00:00.000Z',},{title: 'deleted post',active: false,date: '2020-02-10T16:00:00.000Z',},],};constuser: User=decode(User,jsonPayload);// now encode it back 🙈// ⚠️ date encoding still in progressconstuserJson=encode(user)- Add Swift Decodable functionality.
- Add Swift Encodable functionality.
- Write API docs.
