JSON Processing in PHP: Complete Guide to Working with JSON

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

JSON Processing in PHP: Complete Guide



JSON (JavaScript Object Notation) is a lightweight data interchange format that has become the de facto standard for communication between client and server, as well as between various web services. In PHP, working with JSON is implemented natively and does not require installing additional extensions, making it one of the most convenient languages for parsing and generating JSON data. In this article, we will thoroughly cover all aspects of JSON processing in PHP: from basic functions to advanced techniques and error handling.



Core PHP Functions for Working with JSON



PHP provides two key functions for working with JSON:



  • json_encode($value, $options = 0, $depth = 512) — converts a PHP value (array, object, string, number) into a JSON string.
  • json_decode($json, $associative = false, $depth = 512, $options = 0) — decodes a JSON string back into a PHP value. If the $associative parameter is set to true, an associative array is returned; otherwise, a stdClass object is returned.


Let's look at a simple example:



<?php// Create an associative array$data = [    "name" => "Ivan",    "age" => 30,    "city" => "Moscow",    "skills" => ["PHP", "JavaScript", "Python"]];

// Encode to JSON$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $json;// Output:// {// "name": "Ivan",// "age": 30,// "city": "Moscow",// "skills": ["PHP", "JavaScript", "Python"]// }

// Decode back to array$decoded = json_decode($json, true);echo $decoded['name']; // Ivan?>


Important json_encode Options



The json_encode function supports many flags that modify encoding behavior. The most useful ones include:



  • JSON_UNESCAPED_UNICODE — does not escape Unicode characters (Cyrillic, emoji). Without this flag, Russian letters will be converted to \\uXXXX.
  • JSON_PRETTY_PRINT — formats the output with indentation and line breaks for readability.
  • JSON_NUMERIC_CHECK — converts numeric strings into numbers.
  • JSON_FORCE_OBJECT — forces the creation of an object instead of an array, even if the array is empty or indexed.
  • JSON_PRESERVE_ZERO_FRACTION — preserves the fractional part for whole numbers (e.g., 10.0).


Example of combining options:



<?php$data = ['product' => 'Book', 'price' => '1500.50', 'count' => 5];echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK);// {"product":"Book","price":1500.5,"count":5}?>


Handling Nested Structures and Complex Objects



PHP allows working with deeply nested JSON structures. Let's look at an example of parsing a complex API response:



<?php// Imagine this is a response from an external API$apiResponse = '{    "status": "success",    "data": {        "users": [            {"id": 1, "name": "Anna", "roles": ["admin", "editor"]},            {"id": 2, "name": "Peter", "roles": ["user"]}        ],        "pagination": {            "page": 1,            "totalPages": 3        }    }}';

$parsed = json_decode($apiResponse, true);

// Get all user names$names = array_column($parsed['data']['users'], 'name');print_r($names); // Array ( [0] => Anna [1] => Peter )

// Check if a user has the admin roleforeach ($parsed['data']['users'] as $user) { if (in_array('admin', $user['roles'])) { echo "{$user['name']} has administrator privileges"; }}?>


JSON Error Handling



One of the most common issues is invalid JSON. PHP provides functions for error diagnostics:



  • json_last_error() — returns

Recommendations