Pretty printing JSON in ReactJS means displaying JSON data in a human-readable format, with indentation and proper spacing. This can be achieved using built-in JavaScript functions and React components. Here is a step-by-step guide to do this in detail:
Step 1. Create a React Component
First, you need a React component where you will display the JSON data. This can be a functional or class component. For this example, we will use a functional component.
Step 2. Use JSON.stringify for Pretty Printing
The JSON.stringify function can be used to convert a JavaScript object into a JSON string. To pretty-print, you pass additional arguments for spacing.
Step 3. Display the Pretty Printed JSON
Use a <pre> tag to preserve whitespace and formatting, and a <code> tag for code semantics.
Step-by-Step Code Example
Here’s the complete example:
Step 1. Setup React Environment
If you haven’t set up a React project, you can use Create React App:
npx create-react-app json-pretty-print
cd json-pretty-print
npm start
Step 2. Create PrettyPrintJSON Component
Create a new file named PrettyPrintJSON.js in the src directory:
import React from 'react';
// Sample JSON data
const data = {
name: "John Doe",
age: 30,
address: {
street: "123 Main St",
city: "Anytown",
state: "CA"
},
hobbies: ["reading", "traveling", "swimming"]
};
const PrettyPrintJSON = ({ jsonData }) => {
const prettyJSON = JSON.stringify(jsonData, null, 2);
return (
<pre>
<code>
{prettyJSON}
</code>
</pre>
);
};
const App = () => {
return (
<div>
<h1>Pretty Print JSON Example</h1>
<PrettyPrintJSON jsonData={data} />
</div>
);
};
export default App;
Step 3. Update index.js to Render the Component
In your src/index.js, ensure you are rendering the App component:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
Step 4. Add Basic Styling
You can add some basic styling to make the JSON look better. Update src/index.css:
pre {
background-color: #f5f5f5;
padding: 10px;
border-radius: 5px;
overflow: auto;
max-height: 400px; /* or any value you prefer */
}
code {
font-family: 'Courier New', Courier, monospace;
color: #333;
}
Explanation
- JSON Data: The sample JSON data is defined as a constant
dataobject. - Component Structure: The
PrettyPrintJSONcomponent takesjsonDataas a prop. - Pretty Printing: Inside the component,
JSON.stringify(jsonData, null, 2)is used to convert the JSON object into a string with 2-space indentation for readability. - HTML Structure: The JSON string is placed inside a
<pre>and<code>tag to preserve formatting and apply code semantics. - Styling: Basic CSS is applied to the
<pre>and<code>tags for better readability and to handle overflow.
Dynamic JSON Data
If you want to dynamically pretty-print JSON data (e.g., from an API or user input), you can modify the component to accept props or state:
import React, { useState } from 'react';
const PrettyPrintJSON = ({ jsonData }) => {
const prettyJSON = JSON.stringify(jsonData, null, 2);
return (
<pre>
<code>
{prettyJSON}
</code>
</pre>
);
};
const App = () => {
const [data, setData] = useState({
name: "John Doe",
age: 30,
address: {
street: "123 Main St",
city: "Anytown",
state: "CA"
},
hobbies: ["reading", "traveling", "swimming"]
});
return (
<div>
<h1>Pretty Print JSON Example</h1>
<PrettyPrintJSON jsonData={data} />
{/* Add logic here to update `data` dynamically, e.g., fetch from API */}
</div>
);
};
export default App;
Conclusion
By following this guide, you can easily pretty-print JSON data in ReactJS, making it more readable and manageable in your applications. This approach is flexible enough to handle static and dynamic JSON data.

Join the conversation! Your thoughts help the community grow.