PHP Classes

How to Implement a PHP to JSON String Conversion Without the Limitations of json_encode by Using Services_JSON: Pure PHP implementation of JSON encode and decode

Recommend this page to a friend!

  Author Author  
Picture of Jorge Castro
Name: Jorge Castro <contact>
Classes: 27 packages by
Country: Chile Chile
Innovation award
Innovation award
Nominee: 13x

Winner: 2x


  Detailed description   Download Download .zip .tar.gz  
This package provides a pure PHP implementation of JSON encode and decode functions.

It contains functions that can encode PHP variable values in JSON format.

It can do the opposite by taking a JSON-encoded string and returning the decoded PHP variable value.

This package supports encoding and decoding JSON objects that have key names without quotes.

Details

Services_JSON

PHP implementation of json_encode/decode for PHP 7.2 and higher. This library works with and without quoted keys.

Packagist Total Downloads [Maintenance]() [composer]() [php]() [php]() [CocoaPods]()

This package provides a simple encoder and decoder for JSON notation. It is intended for use with client-side Javascript applications that make use of HTTPRequest to perform server communication functions - data can be encoded into JSON notation for use in a client-side javascript, or decoded from incoming Javascript requests. JSON format is native to Javascript, and can be directly eval() with no further parsing overhead.

So, what is the goal with this version?

While this version doesn't have a better performance than json_encode() and json_decode() available as extension, but it has the next features:

  • [x] it doesn't require an extension. If you can't install ext-json, then you can use this version.
  • [x] it works with JSON with unquoted keys (for example JavaScript notation)
  • [x] It is a simple .php file with no dependency.

Usage

Getting started using composer

  1. Install the library using composer
    composer require eftec/services_json
    
  2. Include the dependency
    use eftec\ServicesJson\Services_JSON;
    include '../vendor/autoload.php';
    

See the folder examples for further examples

Getting started without composer

  1. Copy this file: Services_JSON/Services_JSON.php
  2. Include the file

    use eftec\ServicesJson\Services_JSON;
    include 'Services_JSON.php'; // or where is located the file.
    

Decode

Decode a JSON string into a stdclass or an associative array

$json='{"hello":{"a":2,"b":3},"world":[1,2,3,"aaa"]}';
var_dump(Services_JSON::decode($json)); // as stdclass
var_dump(Services_JSON::decode($json,Services_JSON::GET_ARRAY)); // as array

It also works with unquoted keys


$json='{hello:{a:2,b:3},world:[1,2,3,"aaa","bbbb"]}';  // the keys are unquoted.
var_dump(Services_JSON::decode($json)); // as stdclass
var_dump(Services_JSON::decode($json,Services_JSON::GET_ARRAY)); // as array

Json unwrapped.

With the flag Services_JSON::DECODE_FIX_ROOT, it also works when the origin text misses [] and {} at the start of the code. Note, this feature is not foolproof, for example "[1,2,3],[4,5,6]" will not wrap as "[[1,2,3],[4,5,6]]"

{"a":222,"b:"ccc"}  # normal json
"a":222,"b:"ccc"    # json without the root parenthesis.    

Services_JSON::decode('1,2,3',Services_JSON::GET_ARRAY | Services_JSON::DECODE_FIX_ROOT); // returns [1,2,3]
Services_JSON::decode('"k1":"v1", k2:2',Services_JSON::GET_ARRAY | Services_JSON::DECODE_FIX_ROOT) // returns [ 'k1' => 'v1','k2'=>2]

> Note: DECODE_FIX_ROOT flag detects if the near character is ":" or ",". If the closest character is ":", then it returns > an object, otherwise it returns a list. If there is none, then it returns a list.

Json with unquoted values

With the flag Services_JSON::DECODE_NO_QUOTE it also works when the string values are not quoted.

>Note: invisible characters at the beginner and at the end (tabs, line carriages) will be trimmed.


Services_JSON::decode('{"a":aaa,"b":bbbb,"c": aaaaa}'
  , Services_JSON::GET_ARRAY | Services_JSON::DECODE_NO_QUOTE) // ['a'=>'aaa','b'=>'bbbb','c' => 'aaaaa']

Encode

Encode transform a value (array, object, primitive value, etc.) into a json expression (a string)

$array=["hello"=>['a'=>2,'b'=>3],'world'=>[1,2,3,"aaa","bbb"]];
$obj=(object)$array;
var_dump(Services_JSON::encode($array));  // encode an associative array
var_dump(Services_JSON::encode($obj)); // encode an object

Changelog

  • 2.3.2 * Added flag to decode DECODE_NO_QUOTE
  • 2.3.1 * deleted unused code * fixed comments. * 25% of the code has been refactored.
  • 2.3 * Fixed a typo with a comment. * added phpunit. The entire code is tested but special codification.
  • 2.2 * Now the library is static, so you can call the methods without creating an instance. * If you want to work with the non-static library, then install 1.1
  • 1.1 * It works with PHP 7.2 and higher (including PHP 8.0 and 8.1) * It doesn't require PECL to work. * The code was cleaned * Web header is removed. * Method decode() could return an associative array.
  • 1.0.3-1.0.0 PECL version. It only works with PHP 4.x and PHP 5.x

  Classes of Jorge Castro  >  How to Implement a PHP to JSON String Conversion Without the Limitations of json_encode by Using Services_JSON  >  Download Download .zip .tar.gz  >  Support forum Support forum  >  Blog Blog (1)  >  RSS 1.0 feed RSS 2.0 feed Latest changes  
Name: How to Implement a PHP to JSON String Conversion Without the Limitations of json_encode by Using Services_JSON
Base name: services_json
Description: Pure PHP implementation of JSON encode and decode
Version: -
PHP version: 5
License: GNU Lesser General Public License (LGPL)
 
  Groups   Applications   Files Files  

  Groups  
Group folder image PHP 5 Classes using PHP 5 specific features View top rated classes
Group folder image Text processing Manipulating and validating text data View top rated classes
Group folder image Conversion Unit and datatype conversion View top rated classes
Group folder image Data types Modeling and manipulating data types View top rated classes


  Innovation Award  
PHP Programming Innovation award nominee
November 2022
Nominee
Vote
JSON (JavaScript Object Notation) is a popular format for exchanging data structures between applications in many different languages.

PHP provides built-in functions to encode and decode data structure values in JSON format.

Currently, PHP does not support decoding objects encoded in JSON format with the object keys with double quotes.

This package provides a workaround written in pure PHP for decoding objects with or without quotes in the object key names. This possibility overcomes the limitation of the current PHP versions.

It allows the decoding processing of JSON data generated by applications written in other languages or components that do not use quotes to encode object key names.

Manuel Lemos

  Applications that use this package  
No pages of applications that use this class were specified.

Add link image If you know an application of this package, send a message to the author to add a link here.

  Files folder image Files  
File Role Description
Files folder imageexamples (3 files)
Files folder imagesrc (1 file)
Files folder imagetests (1 file)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file LICENSE Lic. License text
Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  examples  
File Role Description
  Accessible without login Plain text file example_decode.php Aux. Auxiliary script
  Accessible without login Plain text file example_decode_unquoted.php Aux. Auxiliary script
  Accessible without login Plain text file example_encode.php Aux. Auxiliary script

  Files folder image Files  /  src  
File Role Description
  Plain text file Services_JSON.php Class Class source

  Files folder image Files  /  tests  
File Role Description
  Plain text file FirstTest.php Class Class source

Download Download all files: services_json.tar.gz services_json.zip
NOTICE: if you are using a download manager program like 'GetRight', please Login before trying to download this archive.