UNPKG

nested-object-to-key-value

Version:

A lightweight utility to flatten nested JavaScript objects into dot-notation key-value pairs and unflatten them back. Perfect for handling complex configurations, form data, or API transformations.

94 lines (71 loc) โ€ข 2.44 kB
# ๐Ÿฆค Nested objects to key value [![build and test workflow](https://github.com/eivindingebrigtsen/nested-object-to-key-value/actions/workflows/ci.yml/badge.svg)](https://github.com/eivindingebrigtsen/nested-object-to-key-value/actions/workflows/ci.yml) [![npm version](https://badge.fury.io/js/nested-object-to-key-value.svg)](https://www.npmjs.com/package/nested-object-to-key-value) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/) A lightweight utility to flatten nested JavaScript objects into dot-notation key-value pairs and unflatten them back. Perfect for handling complex configurations, form data, or API transformations. ## Features - ๐ŸŽฏ Zero dependencies - ๐Ÿ“ฆ Lightweight (~XKB gzipped) - ๐Ÿ’ช Fully typed (TypeScript) - ๐Ÿ” Preserves type information - โšก Tree-shakeable - ๐Ÿงช Well tested ## ๐Ÿ“ฆ Installation ```bash npm install nested-object-to-key-value ``` ## ๐Ÿ“š Usage ```ts import { flattenJson, unflattenJson } from "nested-object-to-key-value"; // Flatten a nested object const nested = { user: { name: "John", address: { city: "New York", country: "USA", }, }, }; const flattened = flattenJson(nested); // Result: // [ // { key: "user.name", value: "John" }, // { key: "user.address.city", value: "New York" }, // { key: "user.address.country", value: "USA" } // ] // Unflatten back to nested object const flat = { "user.name": "John", "user.address.city": "New York", "user.address.country": "USA", }; const unflattened = unflattenJson(flat); // Result: // { // user: { // name: "John", // address: { // city: "New York", // country: "USA" // } // } // } ``` ## ๐Ÿ“˜ API ### `flattenJson(obj: UnflattenedJson, prefix?: string): FlattenedPair[]` Converts a nested object into an array of flattened key-value pairs. ### `unflattenJson(obj: Record<string, string>): UnflattenedJson` Converts a flat object with dot-notation keys back into a nested object. ### `keyValueArrayToObject(obj: FlattenedPair[]): Record<string, string>` Converts an array of key-value pairs into a flat object. ## ๐Ÿšฒ Testing We use [Vitest](https://vitest.dev/) for testing. ```bash npm test ``` ## ๐Ÿค Contributing Contributions are welcome! Please open an issue or submit a pull request. ## ๐Ÿ“ License MIT