php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #60924 ArrayObject should implement JsonSerializable interface
Submitted: 2012-01-29 17:45 UTC Modified: 2020-12-07 18:13 UTC
Votes:9
Avg. Score:4.6 ± 1.0
Reproduced:6 of 6 (100.0%)
Same Version:2 (33.3%)
Same OS:4 (66.7%)
From: chris at cmbuckley dot co dot uk Assigned: cmb (profile)
Status: Closed Package: SPL related
PHP Version: 5.4.0RC6 OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: chris at cmbuckley dot co dot uk
New email:
PHP Version: OS:

 

 [2012-01-29 17:45 UTC] chris at cmbuckley dot co dot uk
Description:
------------
PHP 5.4 brings the new JsonSerializable interface. ArrayObject already works with json_encode as expected but does not explicitly implement this interface.

Test script:
---------------
$ao = new ArrayObject(array('foo' => 'bar'));

var_dump(json_encode($ao));
var_dump($ao instanceof JsonSerializable);
var_dump($ao->jsonSerialize());

Expected result:
----------------
string(13) "{"foo":"bar"}"
bool(true)
string(13) "{"foo":"bar"}"

Actual result:
--------------
string(13) "{"foo":"bar"}"
bool(false)
PHP Fatal error:  Call to undefined method ArrayObject::jsonSerialize() in - on line 6

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2020-12-07 15:41 UTC] cmb@php.net
-Status: Open +Status: Feedback -Package: Class/Object related +Package: SPL related -Assigned To: +Assigned To: cmb
 [2020-12-07 15:41 UTC] cmb@php.net
Being able to be json_encode()d, is the standard behavior of PHP
objects.  Why should ArrayObject implement JsonSerializable?
 [2020-12-07 18:02 UTC] chris at cmbuckley dot co dot uk
-Status: Feedback +Status: Assigned
 [2020-12-07 18:02 UTC] chris at cmbuckley dot co dot uk
Casting my mind back to the intention 8 years ago, I believe the idea was flawed. I think my thought was something along the lines of "if something can be JSON-serialised, it should implement JsonSerializable". Though as you say, all PHP objects can be JSON-serialised, so application code should transparently use `json_encode($obj)` and a class should only use JsonSerializable if it should customise the JSON output.

Feel free to close the ticket.
 [2020-12-07 18:13 UTC] cmb@php.net
-Status: Assigned +Status: Closed
 [2020-12-07 18:13 UTC] cmb@php.net
Thanks for the swift reply! :)
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Tue Jul 01 14:01:37 2025 UTC