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