PHP read and write JSON from file

46

I have the following JSON in a file list.txt:

{
"bgates":{"first":"Bill","last":"Gates"},
"sjobs":{"first":"Steve","last":"Jobs"}
}

How do I add "bross":{"first":"Bob","last":"Ross"} to my file using PHP?

Here's what I have so far:

<?php

$user = "bross";
$first = "Bob";
$last = "Ross";

$file = "list.txt";

$json = json_decode(file_get_contents($file));

$json[$user] = array("first" => $first, "last" => $last);

file_put_contents($file, json_encode($json));

?>

Which gives me a Fatal error: Cannot use object of type stdClass as array on this line:

$json[$user] = array("first" => $first, "last" => $last);

I'm using PHP5.2. Any thoughts? Thanks!

This question is tagged with php json

~ Asked on 2012-01-13 23:55:48

The Best Answer is


82

The clue is in the error message - if you look at the documentation for json_decode note that it can take a second param, which controls whether it returns an array or an object - it defaults to object.

So change your call to

$json = json_decode(file_get_contents($file), true);

And it'll return an associative array and your code should work fine.

~ Answered on 2012-01-13 23:57:40


23

The sample for reading and writing JSON in PHP:

$json = json_decode(file_get_contents($file),TRUE);

$json[$user] = array("first" => $first, "last" => $last);

file_put_contents($file, json_encode($json));

~ Answered on 2014-03-07 11:34:41


Most Viewed Questions: