Comprehensive Guide to Flatted for Efficient JavaScript Object Serialization

Introduction to Flatted

Flatted is a JavaScript library that offers a powerful and efficient means to serialize and deserialize complex objects and circular structures. If you have ever faced issues with traditional serialization methods, such as JSON.stringify encountering circular references, flatted provides a robust solution. This guide will introduce you to the most useful APIs provided by flatted, complete with code snippets and a practical application example.

Key APIs of Flatted

1. flatted.stringify

Serializes a JavaScript object, including circular references, into a JSON string.

 const { stringify } = require('flatted');
 
 const obj = {};
 obj.a = obj;
 
 const str = stringify(obj);
 console.log(str); // "[\"a\",{\"a\":\"~\"}]"
 

2. flatted.parse

Parses a JSON string that contains circular references back into a JavaScript object.

 const { parse } = require('flatted');
 
 const str = '[\"a\",{\"a\":\"~\"}]';
 const obj = parse(str);
 
 console.log(obj); // { a: [Circular] }
 

3. flatted.toJSON

Alias for flatted.stringify.

 const { toJSON } = require('flatted');
 
 const obj = {};
 obj.a = obj;
 
 const str = toJSON(obj);
 console.log(str); // "[\"a\",{\"a\":\"~\"}]"
 

4. flatted.fromJSON

Alias for flatted.parse.

 const { fromJSON } = require('flatted');
 
 const str = '[\"a\",{\"a\":\"~\"}]';
 const obj = fromJSON(str);
 
 console.log(obj); // { a: [Circular] }
 

Example: Creating a Circular Reference Object App

Here is a complete example of a Node.js application that stores and retrieves circular reference objects using flatted.

 const { stringify, parse } = require('flatted');
 const fs = require('fs');
 
 // Define an object with a circular reference
 const user = {
   name: 'John Doe',
   friend: null
 };
 user.friend = user;
 
 // Serialize the object to a file
 fs.writeFileSync('user.json', stringify(user));
 
 // Read and deserialize the object from the file
 const data = fs.readFileSync('user.json');
 const storedUser = parse(data);
 
 console.log(storedUser.friend === storedUser); // true
 

Utilizing flatted allows developers to handle complex and circular referenced objects with ease, making data storage and transmission much simpler.

Hash: 4c15d16785318c745de0f42bbe65dd9f848b3295768a4cf75f762bf0381cc44c

Leave a Reply

Your email address will not be published. Required fields are marked *