This is something that has just turned from annoying into downright infuriating.
I have a PHP script to register new users to a system and return a JSON response detailing either success or an error ("your password isn't long enough", "this username is already in use", that sort of thing), and no matter what I do, it is frankly determined to - rather than respond with just the PHP associative array as a JSON object i.e. starting with {
- respond with Array{your data here...
.
As you may expect, my jQuery doesn't like this one bit and rightly throws unexpected character at line 1 column 1 of the JSON data
.
<?php
header('Content-Type: application/json');
/*
All the code that works with the DB and builds a response
*/
function_to_log_response_to_server(json_encode($response)); // This logs the response exactly as it should be (i.e. not preceded by "Array")
echo json_encode($response); // This line IMMEDIATELY follows the above
?>
How can I get PHP (or the json_encode function) to stop adding "Array" at the start of the response?
My Answer:
JSON (JavaScript Object Notation) is a lightweight data-interchange format that is easy for humans to read and write and easy for machines to parse and generate. In PHP, you can work with JSON data using the json_encode() and json_decode() functions.
Here is an example of encoding an array into JSON format in PHP:
php
$data = array(
'name' => 'John Doe',
'age' => 30,
'city' => 'New York'
);
$json = json_encode($data);
echo $json;
This will output:
json
{"name":"John Doe","age":30,"city":"New York"}
And here is an example of decoding JSON data in PHP:
php
$json = '{"name":"John Doe","age":30,"city":"New York"}';
$data = json_decode($json, true);
echo $data['name']; // Output: John Doe
echo $data['age']; // Output: 30
echo $data['city']; // Output: New York
You can also work with JSON data from external sources, such as APIs, by using PHP's built-in functions for making HTTP requests and handling JSON data.
Rate this post
4 of 5 based on 5116 votesComments