Implementations
The following are projects implementing JSON API. If you’d like your project listed, send a pull request.
Note: This specification marked 1.0 on May 29th, 2015. The implementations below have not been verified for compliance, but a test suite is now being assembled to vet them.
Client libraries
JavaScript
- ember-data is one of the original exemplar implementations. There is now an offical adapter to support json-api.
- backbone-jsonapi is a Backbone adapter for JSON API. Supports fetching Models & Collections from a JSON API source.
- backbone-relational-jsonapi is a parsing layer for Backbone.Relational. Entities specified in JSON API are automatically parsed to be injected into Backbone.Relational relations.
- orbit.js is a standalone library for coordinating access to data sources and keeping their contents synchronized. Orbit’s Common Library includes JSONAPISource for accessing JSON API servers. Orbit can be used independently or with Ember.js through the ember-orbit integration library.
- YAYSON is an isomorphic library for serializing and reading JSON API data. Extend it to fit your models or just use it with plain objects.
- Ember JSON API Resources is an Ember CLI Addon for a lightweight solution for data persistence in an Ember.js application.
- hapi-json-api Plugin for the hapi framework; enforces Accept/Content-type rules and rewrites Boom errors to be spec compliant.
- jsonapi-datastore is a lightweight standalone library for reading, serializing, and synchronizing relational JSON API data.
- json-api-store A lightweight JavaScript library for using JSON API in the browser.
- superagent-jsonapify A really lightweight (50 lines) JSON-API client addon for superagent, the isomorphic ajax client.
- angular-jsonapi An Angular JSON API client
iOS
- jsonapi-ios is a library for loading data from a JSON API datasource. Parses JSON API data into models with support for auto-linking of resources and custom model classes.
- Spine is a Swift library for working with JSON API APIs. It supports mapping to custom model classes, fetching, advanced querying, linking and persisting.
Ruby
- jsonapi-consumer a ruby library for consuming JSONAPI payloads.
- JsonApiClient attempts to give you a query building framework that is easy to understand (similar to ActiveRecord scopes).
- JsonApiParser a ruby library for parsing/validating/handling JSONAPI documents.
PHP
- Art4 / json-api-client is a library for validating and handling the response body in a simple OOP way.
Perl
- PONAPI::Client is a simple/extensible JSON API v1.0 client.
Java
- jsonapi-converter is a Java JSON API v1.0 client. Besides providing means for serialisation/deserialisation, client comes with Retrofit plugin.
- Morpheuslibrary for deserializing your resources with automatic mapping for relationships.
Server libraries
PHP
- GOintegro / HATEOAS is a library and Symfony 2 bundle that allows you to magically expose your Doctrine 2 mapped entities as resources in a HATEOAS API and supports the full spec of JSON-API for serializing and fetching.
- tobscure / json-api
- neomerx / json-api is a framework agnostic library that fully implements JSON API v1.0.
- neomerx / limoncello-collins (Laravel-based) and neomerx / limoncello-shot (Lumen-based) are pre-configured JSON API v1.0 quick start server application that use neomerx / json-api.
- lode / jsonapi a simple and friendly library, easy to understand for people without knowledge of the specification.
- woohoolabs / yin is a library for advanced users aiming for efficiency and elegance.
- nilportugues / json-api Serializer transformers outputting valid API responses in JSON and JSON API formats.
- nilportugues / symfony2-jsonapi-transformer Symfony 2 JSON API Transformer Bundle outputting valid API responses in JSON and JSON API formats.
- nilportugues / laravel5-jsonapi-transformer Laravel 5 JSON API Transformer Package outputting valid API responses in JSON and JSON API formats.
Node.js
- Fortune.js is a library that includes a comprehensive implementation of JSON API.
- json-api turns an Express + Mongoose app into a JSON-API server.
- endpoints is an implementation of JSON API using Bookshelf.
- YAYSON is an isomorphic library for serializing and reading JSON API data. Simply use it with plain objects or extend it to fit your ORM (currently it has an adapter for Sequelize).
- jsonapi-serializer is a Node.js framework agnostic library for serializing your data to JSON API.
- jsonapi-server A feature-rich config-driven json:api framework.
- jsonapi-store-memoryhandler An in-memory data store for rapid prototyping.
- jsonapi-store-relationaldb A relational database handler for jsonapi-server.
- jsonapi-store-mongodb A mongodb handler for jsonapi-server.
- jsonapi-store-elasticsearch An elasticsearch handler for jsonapi-server.
- jsonapify is an unintrusive, well-tested and easy-to-use library for the development of JSON API (or similar) APIs. It integrates nicely with Mongoose models as connect-compatible middleware. Its development is very recent though, which only means that feature requests and feedback is more than welcome!
- loopback-component-jsonapi JSON API support for loopback highly-extensible, open-source Node.js framework
- jsonapi-mapper JSON API-Compliant Serialization for your Node ORM.
- jaysonapi jaysonapi is a framework agnostic JSON API v1.0.0 serializer. jaysonapi provides more of a functional approach to serializing your data. Define a serializer with a type and schema, and call serialize on it passing in the data, included, meta, errors, etc. as a plain object.
- json-api-ify serialize the ** out of your data. json api v1.0 complaint.
Ruby
- Jsonapi-for-rails empowers your JSONAPI compliant Rails APIs. Implement your APIs with very little coding.
- ActiveModel::Serializers is one of the original exemplar implementations, but is slightly out of date at the moment.
- The rabl wiki has a page describing how to emit conformant JSON.
- RestPack::Serializer implements the read elements of json-api. It also supports paging and side-loading.
- Oat ships with a JSON API adapter.
- JSONAPI::Resources provides a complete framework for developing a JSON API server. It is designed to work with Rails, and provides routes, controllers, and serializers.
- Yaks Library for building hypermedia APIs, contains a JSON API output format.
- JSONAPI::Serializers provides a pure Ruby, readonly serializer implementation.
- Roar Renders and parses represenations of Ruby objects
- Jbuilder::JsonAPI Simple & lightweight extension for Jbuilder
- JSONAPI::Utils works on top of the awesome JSONAPI::Resources gem bringing to controllers a Rails way to render JSON API-compliant responses.
Python
- Hyp is a library for creating json-api responses.
- SQLAlchemy-JSONAPI provides JSON API serialization for SQLAlchemy models.
- django-rest-framework-json-api provides JSON API parsing and rendering for the Django REST Framework
- jsonapi is a Django module with JSON API implementation.
- jsoongia is a framework agnostic JSON API implementation.
- ripozo provides a framework for serving JSON API content (among other Hypermedia formats) in Flask, Django and more.
- marshmallow-jsonapi provides JSON API data formatting for any Python web framework.
- neoapi serializes JSON API–compliant responses from neomodel StructuredNodes for Neo4j data
- py-jsonapi is a toolkit for building a JSON API. Can be extended easily to work with every web framework and database driver. Comes with support for flask, tornado, mongoengine and sqlalchemy.
- xamoom-janus is a Python module to easily and fast extend Python web frameworks like Flask or BottlyPy with json:api functionality. Also offers a flexible mechanism for data mapping and hooks to intercept and extend its functionality according to your projects needs.
Go
- api2go is a full-fledged library to make it simple to provide a JSON API with your Golang project.
- jsonapi serializes and deserializes jsonapi formatted payloads using struct tags to annotate the structs that you already have in your Golang project. Godoc
- go-json-spec-handler drop-in library for handling requests and sending responses in an existing API.
- jsh-api deals with the dirty work of building JSON API resource endpoints. Built on top of jsh
.NET
-
JsonApiNet lets you quickly deserialize JSON API documents into C# entities. Supports compound documents, complex type mapping from attributes, attribute mapping, and more. See the README for full details.
-
JSONAPI.NET is a .NET library that integrates with ASP.NET WebAPI, Json.NET, and (optionally) Entity Framework to help you quickly create JSON API compliant web services.
-
NJsonApi is a .NET server implementation of the standard. It aims at good extensibility and performance while maintaining developer-friendliness with interchangable convenions and builder-style configuration.
-
Migrap.AspNet.Mvc.Jsonapi is an ASP.NET 5 (vNext) library that allows for existing code to build JSON API responses through output formatters.
-
Saule is a small JSON API 1.0 compatible library that integrates well with established Web API conventions. It has complete documentation and near 100% test coverage.
Java
- katharsis has comprehensive coverage of standard allowing to create JSON:API compatible resources with dynamic relation based routing.
- katharsis-core is Java based core library for katharsis allowing to manage RESTful endpoints compliant with JSON API standard.
- katharsis-rs is adapter for katharsis core module for all compatible JAX-RS based frameworks.
- katharsis-spring is adapter for katharsis core module for Spring and Spring Boot framoworks.
- katharsis-servlet is a generic servlet/filter adapter for katharsis core module. This module can be used in traditional servlet or filter based Java web applications, or even non-Servlet-API-based web applications such as Portal/Portlet, Wicket, etc.
- Elide is a web framework supporting JSON API. Through annotation-based JSON API endpoint generation, Elide enables you to focus on your data model, security model, and business logic while avoiding unnecessary boilerplate. Moreover, through use of the JSON API Patch extension, Elide provides full support for database transactions.
Elixir
- ja_serializer is a behaviour and DSL to emit conforming JSON. Suitable for use in a Phoenix view or in a Plug stack.
Perl
- PONAPI::Server is a Plack-based web server, providing a generic service adhering to the spec. just plug your data-repository & play. currently trial-released, will be soon available on CPAN.
Examples
- RestPack::Serializer provides examples which demonstrate sample responses.
- Endpoints provides a fully working example API
Related Tools
Ruby
- json-patch implementation of JSON Patch (rfc6902)
- hana implementation of the JSON Patch and JSON pointer spec
Node.js
- json-patch implementation of JSON Patch (rfc6902)
Python
- jsonpatch implementation of JSON Patch (rfc6902)
- drf-json-patch integrates jsonpatch with Django REST Framework