Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/arshad-yaseen/circular-to-json
This library that provides a way to handle circular references when serializing and deserializing JSON objects.
https://github.com/arshad-yaseen/circular-to-json
circular circular-json json json-stringify string structure
Last synced: 6 days ago
JSON representation
This library that provides a way to handle circular references when serializing and deserializing JSON objects.
- Host: GitHub
- URL: https://github.com/arshad-yaseen/circular-to-json
- Owner: arshad-yaseen
- License: mit
- Created: 2023-03-29T06:36:49.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-03-29T18:19:44.000Z (over 1 year ago)
- Last Synced: 2024-10-13T11:05:47.711Z (24 days ago)
- Topics: circular, circular-json, json, json-stringify, string, structure
- Language: TypeScript
- Homepage: https://npmjs.com/package/circular-to-json?activeTab=readme
- Size: 32.2 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
#### This library that provides a way to handle circular references when serializing and deserializing JSON objects. When serializing an object that has circular references, the default JSON.stringify() method will throw an error. CircularJSON provides a way to avoid this error by converting circular references to a stringified version of "[Circular]".
## Installation
You can install using NPM or Yarn:
```bash
npm i circular-to-json```
```bash
yarn add circular-to-json```
## Simple Usage
#### This package exports a `CircularJSON` object with two methods: `stringify`, `parse` and `stringifyAndParse`. Here's how you can use them:
## Stringify
```javascript
import CircularJSON from "circular-to-json";const obj = { a: 1 };
obj.b = obj; // adding circular referenceconst jsonString = CircularJSON.stringify(obj);
console.log(jsonString);
```#### Output
```javascript
'{"a":1,"b":{"[Circular]":true}}';
```## Parse
```javascript
const jsonString = CircularJSON.stringify(obj);
const parsedObj = CircularJSON.parse(jsonString);
console.log(parsedObj);
```#### Output
```javascript
{ a: 1, b: [Circular] }
```## stringifyAndParse
#### `stringifyAndParse` method that combines the `stringify` and `parse` methods into a single operation.
```javascript
const obj = { a: 1 };
obj.b = obj;const parsedObj = CircularJSON.stringifyAndParse(obj);
```#### Output
```javascript
{ a: 1, b: [Circular] }
```## Other Usage
#### The `stringify` method takes an optional `replacer` function and an optional `space` parameter, which work the same way as the corresponding parameters in `JSON.stringify`.
## stringify - space
```javascript
const obj = {
name: "John",
age: 30,
hobbies: ["reading", "running", "cooking"],
address: {
street: "123 Main St",
city: "Anytown",
state: "CA",
zip: "12345"
}
};// Set the space parameter to '\t' to use a tab for indentation
const jsonStrWithTab = CircularJSON.stringify(obj, undefined, '\t');
console.log(jsonStrWithTab);```
#### Output
```javascript
{
"name": "John",
"age": 30,
"hobbies": [
"reading",
"running",
"cooking"
],
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345"
}
}```
## stringify - replacer
```javascript
const obj = {
name: "Alice",
age: 30,
children: [
{ name: "Bob", age: 5 },
{ name: "Charlie", age: 3 },
],
};// Define a replacer function that converts all numbers to strings
const replacer = (key, value) => {
if (typeof value === "number") {
return value.toString();
}
return value;
};const jsonString = CircularJSON.stringify(obj, replacer);
console.log(jsonString);
```#### Output
```javascript
{
"name": "Alice",
"age": "30",
"children": [
{
"name": "Bob",
"age": "5"
},
{
"name": "Charlie",
"age": "3"
}
]
}
```## parse - reviver
#### The `parse` method takes an optional `reviver` function, which works the same way as the corresponding parameter in `JSON.parse`.
```javascript
const jsonString =
'{"name":"John Smith","age":30,"car":{"model":"Tesla","year":2022}}';const reviver = (key, value) => {
if (typeof value === "string" && key !== "") {
return value.toUpperCase(); // convert all string values (except the root object) to uppercase
}
return value; // otherwise return the original value
};const obj = JSON.parse(jsonString, reviver);
console.log(obj);
```#### Output
```javascript
{
"name": "JOHN SMITH",
"age": 30,
"car": {
"model": "TESLA",
"year": 2022
}
}```
### Contributing
#### circular-to-json is an open-source project, and we welcome contributions from the community.
### Licence
#### CircularJSON is licensed under the `MIT License`.