🛠️DevTools

How to View and Explore JSON Data

Large JSON files can be difficult to read as raw text. This guide shows you how to use JSON tree viewers to explore nested data, find specific values, and extract JSON paths for use in your code.

Try JSON Viewer Tool →

Why Use a JSON Viewer?

Raw JSON is hard to read, especially with deeply nested data:

json
{"users":[{"id":1,"name":"John","address":{"city":"NYC","coords":{"lat":40.7,"lng":-74}}}]}

A JSON tree viewer transforms this into an interactive structure where you can:

  • Expand/collapse nodes - Focus on the data you need
  • See data types - Distinguish strings, numbers, booleans, arrays
  • Find JSON paths - Get paths like $.users[0].address.city
  • Search - Find keys or values instantly
  • Copy values - Extract specific data with one click

This is essential for:

  • Debugging API responses
  • Exploring unfamiliar data structures
  • Finding the right path for data extraction
  • Understanding config file structures

Understanding JSON Paths

JSON paths let you reference specific values in a JSON structure. They're used in many tools and languages:

Common JSON Path Formats

FormatExampleUsed In
Dot notationuser.address.cityJavaScript, Python
Bracket notation["user"]["address"]["city"]JavaScript
JSONPath$.user.address.cityjq, many APIs
Array accessusers[0].nameAll formats

Finding Paths with a Viewer

When you hover over a node in a JSON viewer, you'll see its path. For this JSON:

json
1{
2 "order": {
3 "items": [
4 { "name": "Widget", "price": 9.99 }
5 ]
6 }
7}

The price path would be: $.order.items[0].price

javascript
// Using paths in JavaScript
const data = {
  order: {
    items: [{ name: "Widget", price: 9.99 }]
  }
};

// Dot notation
const price = data.order.items[0].price; // 9.99

// Using lodash get() for safe access
import { get } from 'lodash';
const price = get(data, 'order.items[0].price'); // 9.99
const missing = get(data, 'order.items[0].discount', 0); // 0 (default)

// Using optional chaining (modern JS)
const price = data?.order?.items?.[0]?.price; // 9.99

Viewing API Responses

REST and GraphQL APIs return JSON that can be complex. Here's how to explore them effectively:

REST API Response Pattern

Most REST APIs follow this structure:

json
1{
2 "data": { ... }, // The actual data
3 "meta": { ... }, // Pagination, timestamps
4 "errors": [ ... ] // Any errors
5}

GraphQL Response Pattern

GraphQL responses have a specific structure:

json
1{
2 "data": {
3 "user": {
4 "posts": {
5 "edges": [
6 { "node": { "title": "..." } }
7 ],
8 "pageInfo": { "hasNextPage": true }
9 }
10 }
11 }
12}

Use the viewer to expand nodes and find the paths to the data you need.

javascript
// Extracting data from API responses

// REST API with pagination
async function fetchAllUsers() {
  const response = await fetch('/api/users');
  const json = await response.json();
  
  // Path: $.data.users
  const users = json.data.users;
  
  // Path: $.meta.pagination.nextPage
  const nextPage = json.meta?.pagination?.nextPage;
  
  return { users, nextPage };
}

// GraphQL connection pattern
function extractPosts(response) {
  // Path: $.data.user.posts.edges[*].node
  return response.data.user.posts.edges.map(edge => edge.node);
}

Exploring Config Files

Many configuration files use JSON. Here's how to navigate common ones:

package.json (Node.js)

Key paths:

  • $.scripts - npm/yarn scripts
  • $.dependencies - production dependencies
  • $.devDependencies - dev dependencies

tsconfig.json (TypeScript)

Key paths:

  • $.compilerOptions - compiler settings
  • $.include - files to compile
  • $.exclude - files to ignore

Kubernetes (JSON format)

Key paths:

  • $.spec.containers[0].image - container image
  • $.spec.containers[0].resources - CPU/memory limits
  • $.metadata.labels - resource labels
bash
# Using jq to explore JSON files in terminal

# View package.json scripts
cat package.json | jq '.scripts'

# Get all dependency names
cat package.json | jq '.dependencies | keys'

# Find specific compiler option
cat tsconfig.json | jq '.compilerOptions.target'

# Get Kubernetes container images
cat deployment.json | jq '.spec.template.spec.containers[].image'

# Pretty print with colors
cat data.json | jq -C '.'

Searching in JSON

Large JSON files can have hundreds of keys. Use search to find what you need:

Search Tips

  1. Search by key name - Type the property name you're looking for
  2. Search by value - Find specific strings or numbers
  3. Partial matches - Search "user" to find "userId", "username", "userProfile"

Common Search Patterns

Looking forSearch
Any ID fieldid
Timestampsdate, time, At
URLsurl, http
Status fieldsstatus, state
Error infoerror, message
javascript
// Programmatically search JSON

// Find all keys matching a pattern
function findKeys(obj, pattern, path = '') {
  const matches = [];
  const regex = new RegExp(pattern, 'i');
  
  for (const [key, value] of Object.entries(obj)) {
    const currentPath = path ? `${path}.${key}` : key;
    
    if (regex.test(key)) {
      matches.push({ path: currentPath, key, value });
    }
    
    if (typeof value === 'object' && value !== null) {
      matches.push(...findKeys(value, pattern, currentPath));
    }
  }
  
  return matches;
}

// Usage
const data = { userId: 1, user: { userName: "John" } };
console.log(findKeys(data, 'user'));
// [
//   { path: 'userId', key: 'userId', value: 1 },
//   { path: 'user', key: 'user', value: {...} },
//   { path: 'user.userName', key: 'userName', value: 'John' }
// ]

Working with Large JSON Files

Large JSON files (10MB+) can be slow to render. Here are strategies to handle them:

In a JSON Viewer

  1. Collapse all nodes first - Start with everything collapsed
  2. Expand selectively - Only expand sections you need
  3. Use fullscreen mode - More space for complex structures
  4. Search first - Find what you need without expanding everything

Performance Tips

  • Preview large files before loading completely
  • Use streaming parsers for very large files
  • Consider splitting large JSON into smaller chunks
javascript
// Streaming JSON for large files (Node.js)
import { createReadStream } from 'fs';
import { parser } from 'stream-json';
import { pick } from 'stream-json/filters/Pick';
import { streamValues } from 'stream-json/streamers/StreamValues';

// Only extract specific paths from large file
createReadStream('large-file.json')
  .pipe(parser())
  .pipe(pick({ filter: 'data.users' })) // Only parse this path
  .pipe(streamValues())
  .on('data', ({ value }) => {
    console.log('User:', value);
  });

// Browser: Use Web Workers for large JSON
const worker = new Worker('json-worker.js');
worker.postMessage({ json: largeJsonString });
worker.onmessage = (e) => {
  console.log('Parsed:', e.data);
};

JSON Viewer vs Other Tools

Different tools for different needs:

ToolBest ForLimitations
JSON ViewerExploring, finding pathsNot for editing
JSON FormatterPrettifying minified JSONNo interactivity
JSON EditorModifying JSONCan be complex
jq (CLI)Scripted extractionLearning curve

When to Use Each

Use a JSON Viewer when:

  • You need to understand a data structure
  • Finding the right path for code
  • Debugging API responses
  • Exploring unfamiliar JSON

Use JSON Formatter when:

  • You have minified JSON to read
  • Need to share formatted JSON
  • Validating JSON syntax

Use jq when:

  • Automating JSON processing
  • Extracting data in scripts
  • Transforming JSON structures

Frequently Asked Questions

What's the difference between a JSON viewer and a JSON formatter?

A JSON formatter prettifies JSON with proper indentation. A JSON viewer goes further, providing an interactive tree where you can expand/collapse nodes, search, and copy paths. Use a formatter for quick prettifying, and a viewer for exploring complex data.

How do I find the path to a specific value in JSON?

In a JSON viewer, hover over any node to see its full path (like $.user.address.city). You can then copy this path to use in your code with dot notation (user.address.city) or bracket notation (['user']['address']['city']).

Can I edit JSON in a viewer?

Most JSON viewers are read-only for performance and simplicity. To edit JSON, use a JSON editor or text editor. Viewers are optimized for exploring and understanding data structure.

Why is my JSON viewer slow with large files?

Large JSON files require rendering many DOM nodes. Try collapsing all nodes first, then expanding only what you need. For very large files (10MB+), consider using command-line tools like jq or streaming parsers.

How do I search for specific data in JSON?

Most JSON viewers have a search function (often Ctrl+F or Cmd+F). Type a key name or value to find it. The viewer will highlight matches and may allow you to jump between them.

Try the JSON Viewer Tool

Now that you understand how it works, try encoding and decoding with our free online tool.

Open JSON Viewer