Skip to content

Repository files navigation

Codable npmnpm bundle sizenpm

A strict json parser inspired by Swift Codable ❤️

Alt text

Features

Works almost same as Swift Codable, but with some extra implementation to fit TypeScript / JavaScript environment.

  • Decodes JSON payload with pre-defined scheme.
    • Custom keys parsing.
    • Strict types checking.
    • Nested Codable parsing.

Supported Types

Types design was inspired by MobX State Tree ❤️

  • Primitives
    • String
    • Number
    • Boolean
  • Complex
    • Codable
    • Optional
    • Array
    • Date

Installation

yarn add @gorhom/codable
# or
npm install @gorhom/codable

Usage

import{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)

TODO

Built With

Author

About

A strict json parser inspired by Swift Codable

Topics

Resources

Stars

28 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages