JSON Encode/decode doesn't work as it should JSON Encode/decode doesn't work as it should json json

JSON Encode/decode doesn't work as it should


Your Javascript

eval has an issue with leading { characters, because of an ambiguity with block scope.

Using the parentheses to force the input to be parsed as an expression is a solution, but you should avoid eval entirely and use a proper JSON decoding function.


Your PHP

We'd need to see the data that you send to your PHP script to know why it won't parse. In general, as long as JSONLint accepts your JSON, so will PHP's json_decode. So give that a go.


For the php to javascript issue refer to the Tomalak Geret'kal answer.

For the javascript to php maybe I have the solution:

If you want an associative array in php then you have to pass assoc parameter as true into json_decode (default to false)

Example:

$array = json_decode($jsonString, true);

I was bitten a couple of times by this: by default json_decode try to create an object if it receive a javascript object (it make perfect sense if you think of) and you have to force it to render an associative array if you need this behaviour


I think you need to do some string processing, all you need to do is echo and see the exact format of your JSON string and make sure it conforms to the standard format, then use string processing both on the server and client sides to achieve the desired effect