PHP JSON Handling with json_encode & json_decode

JSON is used in most of your web applications for dealing with data, and so, in a way, PHP JSON handling has become part of the essentials which is a great way to represent your data in a lightweight, human-readable, and language-agnostic format. PHP developers commonly use JSON when processing the data transfer between the front end and back end, as the built-in functions such as json_encode and json_decode in PHP work smoothly to encode and decode data.

Through this tutorial, you will learn how PHP makes working with JSON rather effortless through the use of two major functions: json_encode() and json_decode().

These utilities will let you change data into JSON format so that handling data becomes easy and then change the JSON back into PHP-friendly formats. Each function does what it does, under the hood, to help with PHP JSON handling, as we shall see.

What is JSON? Why is it useful?

JSON (JavaScript Object Notation) is a format that is useful for storing and exchanging data in a structured way. It is widely used because it is both human-readable and lightweight; it allows complex data structures to be represented in a format that’s easily accessible to people. JSON integrates well with JavaScript, making it a great option to transfer data from a client—for example, a browser—to a server and vice versa.

PHP supports the processing of JSON, allowing efficient, fast, and straightforward interaction with JSON data without using workarounds.

Next, we will look at how PHP data structures need to be converted into JSON format using json_encode() and how JSON data will be converted and made readable to PHP using json_decode().

Encoding Data to JSON using json_encode()

One of the major tasks when working with JSON data in PHP is converting PHP data structures, like arrays or objects, into JSON format. This is where json_encode() comes in. The json_encode() function takes a PHP variable and converts it into a JSON string. This now JSON-encoded content can then be sent to a client or used in various other parts of your application where JSON format is required. 

Using json_encode() is pretty simple. Let’s look at a basic example. Suppose you have the following PHP array, which contains information about a user:

$user_data = [
    "name" => "John Doe",
    "email" => "[email protected]",
    "age" => 30
];
$json_data = json_encode($user_data);
echo $json_data;

The json_encode() function converts $user_data into a JSON string. The output of the above example might look like this:  

{"name":"John Doe","email":"[email protected]","age":30}

Let’s take a look at the json_encode() options.

The json_encode() function in PHP also provides several optional flags that modify how data is encoded and can be helpful depending on what exactly you are trying to achieve, such as readability or handling complex data structures. Among the most useful flags are:

  • JSON_PRETTY_PRINT: The JSON string will be formatted with indentation so that it is more readable.
  • JSON_NUMERIC_CHECK: Numeric strings are encoded as numbers.
  • JSON_UNESCAPED_SLASHES: Prevents escaping of forward slashes (useful for URLs).
  • JSON_UNESCAPED_UNICODE: Does not escape Unicode characters.

Here is an example:

echo json_encode($user_data, JSON_PRETTY_PRINT);

This outputs the JSON in a more readable format:

{
    "name": "John Doe",
    "email": "[email protected]",
    "age": 30
}

Anyway, in the following section, you will learn how to decode JSON data with json_decode()

Parsing JSON Data with json_decode()

We have seen how to encode data, let’s take a look at the reverse process—called decoding. PHP’s json_decode() function takes a JSON string and converts it back into a PHP data structure. This is especially useful when receiving JSON data from a client, API, or other sources, which needs to be manipulated within your PHP code.  

Suppose we have the following JSON data stored in a string:

$json_string = '{"name": "John Doe", "email": "[email protected]", "age": 30}';
$data = json_decode($json_string, true);
print_r($data);

In this example, json_decode() returns an associative array from the JSON string because we passed the parameter true. The output would be:

Array
(
    [name] => John Doe
    [email] => [email protected]
    [age] => 30
)

If you prefer to work with objects rather than arrays, just omit the true parameter, and json_decode() will return a PHP object:  

Here is another example of decoding JSON to an object:

$data = json_decode($json_string);
echo $data->name; // Outputs: John Doe

Anyway, in the following section, you will learn how to handle errors in JSON decoding.

Handling Errors

When working with external JSON data, you should never assume that the data is valid. Fortunately, PHP json_decode() provides error-checking functions that help you handle invalid JSON gracefully. Use json_last_error() after decoding to check if an error occurred:  

$data = json_decode($json_string);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo "Error decoding JSON: " . json_last_error_msg();
}

This will allow you to catch any specific issues, such as structural JSON mistakes, and handle errors before they impede your application’s functionality.

Wrapping Up

JSON handling in PHP is one of its most powerful features, enabling you to streamline data exchange and manage data structures with ease.

JSON opens up new possibilities for working with APIs, databases, and JavaScript. Understanding json_encode() and json_decode() will enhance your ability to handle data within PHP, making your applications more versatile and more readable.

Similar Reads

PHP Anonymous Function: How It Works with Examples

The anonymous function in PHP lets you define a small task that doesn’t require a function name. Understand the Anonymous…

PHP array_diff_uassoc: How to Compare Arrays with Keys

PHP array_diff_uassoc compares arrays by values and keys. You can also pass a custom function to compare keys in your…

PHP Logical Operators | Understanding the 6 Logical Operators

The PHP logical operators are operands that can be used to check two or more expressions together. For examples (…

PHP explode Function: How it Works with Examples

When you deal with text in PHP, sometimes you need to break it into parts. This is common when users…

PHP MySQL WHERE: How to Filter Data in MySQL

Filtering data is a big part of getting the right information to show up. That is where the WHERE clause…

PHP NOT ( ! ) Operator: A Comprehensive Guide

The NOT operator in PHP (!) provides the reverse of whatever truth value is given by a certain expression. It’s…

PHP Functions: The Complete Guide for Beginners

So, what is a function? Quite simply, a function in PHP is a set of instructions you write once, and…

PHP array_fill_keys: Create Arrays with Specific Keys

The PHP array_fill_keys function helps you to build an array where each key has the same value. What is the…

PHP Float: Understanding Float Precision in PHP

A PHP float is a kind of number that has a decimal point, like 2.45 or 0.11. It’s also called…

PHP Object | How to Create an Instance of a Class

The PHP object is an instance from the PHP class or the main data structure that is already been created…

Previous Article

PHP Global Variables & Superglobals: A Complete Guide

Next Article

PHP XML Parsers: Everything You Need to Know

Write a Comment

Leave a Comment

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


Subscribe to Get Updates

Get the latest updates on Coding, Database, and Algorithms straight to your inbox.
No spam. Unsubscribe anytime.