# paularmstrong/normalizr

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/paularmstrong-normalizr).**

20,826 stars · 859 forks · JavaScript · MIT · archived

## Links

- GitHub: https://github.com/paularmstrong/normalizr
- awesome-repositories: https://awesome-repositories.com/repository/paularmstrong-normalizr.md

## Topics

`api` `flux` `javascript` `json` `normalize` `normalizr` `reactjs` `redux`

## Description

normalizr is a JSON data normalization library and schema-based data transformer. It functions as a state management helper designed to flatten deeply nested JSON structures into a relational format based on predefined schemas.

The library transforms complex nested objects into flat entities to prevent data duplication in client-side caches and stores. It organizes API responses into a relational format that mimics a database, facilitating consistent updates and easier retrieval within global state managers.

Its core capabilities include relational data modeling and the ability to transform hierarchical API data into keyed entities for simplified data manipulation and lookup.

## Tags

### Data & Databases

- [JSON Result Flattening](https://awesome-repositories.com/f/data-databases/json-result-flattening.md) — Transforms deeply nested JSON responses into flat, relational structures based on a predefined schema.
- [Relational Data Transformations](https://awesome-repositories.com/f/data-databases/data-governance-modeling/data-modeling-schemas/schema-mapping/schema-transformation-pipelines/relational-data-transformations.md) — Maps complex nested objects to flat entities using a defined set of relationship rules and schemas.
- [Object-Linked Key-Value Mappings](https://awesome-repositories.com/f/data-databases/key-value-stores/structured-object-mappings/object-linked-key-value-mappings.md) — Organizes entities into a key-value store where objects are indexed by unique IDs for constant-time lookup.
- [Reference-Based Denormalization](https://awesome-repositories.com/f/data-databases/data-store-requirements/reference-based-denormalization.md) — Ships a denormalize function to reconstruct original nested JSON structures by looking up entity IDs in a flat store.
- [Relational Data Modeling](https://awesome-repositories.com/f/data-databases/relational-data-modeling.md) — Transforms hierarchical API data into a relational format that mimics a database for easier retrieval.

### Scientific & Mathematical Computing

- [Schema-Based Traversals](https://awesome-repositories.com/f/scientific-mathematical-computing/recursive-tree-traversal-algorithms/schema-based-traversals.md) — Provides recursive traversal of nested data trees to apply normalization rules based on defined entity relationships.

### Software Engineering & Architecture

- [Entity-ID Linking](https://awesome-repositories.com/f/software-engineering-architecture/entity-id-linking.md) — Implements a mechanism to replace nested JSON objects with unique IDs to maintain relationships within a flattened store.
- [Store Normalization](https://awesome-repositories.com/f/software-engineering-architecture/redux-implementations/store-normalization.md) — Prepares nested API data for storage in global state managers like Redux to ensure consistent updates across components.

### Web Development

- [Client-Side State Management Libraries](https://awesome-repositories.com/f/web-development/client-side-state-management-libraries.md) — Provides a way to organize API responses into a flat structure to prevent data duplication in client-side state managers.
