Nadir Laskar
Nadir Laskar

Reputation: 4150

json_decode returns json string not an array

<?php

$json=file_get_contents('php://input',true);
$data = json_decode($json, true);

print_r($data);
?>

Output given is {"EventTitle":"Game","EventBody":"body","EventDate":"20 November, 2016","EventType":"party"}

Json Data posted is:

 {"EventTitle":"Game","EventBody":"body","EventDate":"20 November, 2016","EventType":"party"}

Writing the json data in a variable and passing it to json_decode works but posting the same from the "php://input" returns a JSON data instead of associative array.

Upvotes: 3

Views: 2761

Answers (1)

Don&#39;t Panic
Don&#39;t Panic

Reputation: 41810

It looks like @tkausl is correct. The JSON you're receiving has been double-encoded. Since it's double-encoded, a temporary solution would be to double-decode it.

$data = json_decode(json_decode($json), true);

But the real solution is to figure out why it's like that to begin with and fix it (if it's yours to fix).

Upvotes: 9

Related Questions