Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why json_decode doesn't work for me?

Tags:

json

php

I'm a little confused here. if I pass a variable to json_decode, it doesn't work:

$stringJSON = $_GET['jsonstring'];  
echo $stringJSON;
$stringObject = json_decode($stringJSON);
var_export($stringObject);

The first echo correctly shows me the JSON string I passed, e.g.

{\"Items\":[{\"Name\":\"name\",\"Description\":\"\"],\"Name\":\"Christmas\"}

The second echo shows NULL. So I grab the string from the first echo and write the following code:

$stringObject = json_decode("{\"Items\":[{\"Name\":\"name\",\"Description\":\"\"],\"Name\":\"Christmas\"}");
var_export ($stringObject);

And what do you say, it shows me the correctly decoded array. The string is absolutely the same, I even kept the escape characters. Or maybe they are the problem?

like image 959
taralex Avatar asked Jan 18 '12 03:01

taralex


People also ask

Why is json_decode returning null?

null is returned if the json cannot be decoded or if the encoded data is deeper than the nesting limit.

How to convert JSON in PHP?

Convert the request into an object, using the PHP function json_decode(). Access the database, and fill an array with the requested data. Add the array to an object, and return the object as JSON using the json_encode() function.

What is the use of json_decode?

The json_decode() function is used to decode or convert a JSON object to a PHP object.


2 Answers

Looks like your server has magic_quotes_gpc enabled. Either disable it or run $stringJSON through stripslashes() before using it.

$stringJSON = get_magic_quotes_gpc() ?
    stripslashes($_GET['jsonstring']) : $_GET['jsonstring'];
like image 124
Phil Avatar answered Oct 21 '22 23:10

Phil


This

[{\"Name\":\"name\",\"Description\":\"\"]

needs to be

[{\"Name\":\"name\",\"Description\":\"\"}]

You are missing the closing }

like image 38
Joe Avatar answered Oct 22 '22 00:10

Joe