Getting data from JSON Object

Craigy Craigo
$response = '{"items":
     [{"id":"1","food":"rice","Amount":"100","condition":"paid"},\
      {"id":"2","food":"beans","Amount":"200","condition":"paid"},\
      {"id":"3","food":"yam","Amount":"50","condition":"not paid"},\
      {"id":"4","food":"tomatoes","Amount":"100","condition":"paid"},\
      {"id":"5","food":"potato","Amount":"700","condition":"paid"}]}';

echo $response['items'][1]['food'];

Error: "Illegal string offset 'items'

Why can't I access the data?

Andreas

You must decode a json string before using it as an object/array.
Your question shows you want to use it as an array, that means the second parameter of json_decode should be true.
However the \ makes your string invalid. Is that copy paste error or is that the actual string?
If it is the actual string then you may need to remove the \ before decoding.
I assume it's a copy paste error?

$response = '{"items":
     [{"id":"1","food":"rice","Amount":"100","condition":"paid"},
      {"id":"2","food":"beans","Amount":"200","condition":"paid"},
      {"id":"3","food":"yam","Amount":"50","condition":"not paid"},
      {"id":"4","food":"tomatoes","Amount":"100","condition":"paid"},
      {"id":"5","food":"potato","Amount":"700","condition":"paid"}]}';

$arr = json_decode($response, true);
echo $arr['items'][1]['food']; // beans

https://3v4l.org/RiqSo


If you need to remove the unwanted \ you can use stripslashes.

$arr = json_decode(stripslashes($response), true);

https://3v4l.org/WslYh


To replicate the error you get you need to do the following:

$response = '{"items":
     [{"id":"1","food":"rice","Amount":"100","condition":"paid"},\
      {"id":"2","food":"beans","Amount":"200","condition":"paid"},\
      {"id":"3","food":"yam","Amount":"50","condition":"not paid"},\
      {"id":"4","food":"tomatoes","Amount":"100","condition":"paid"},\
      {"id":"5","food":"potato","Amount":"700","condition":"paid"}]}';

$arr = (string)json_decode($response, true); // json_decode returns NULL and the string cast makes it "NULL"
echo $arr['items'][1]['food']; // Warning: Illegal string offset 'items'
// or
echo $response['items'][1]['food']; // Warning: Illegal string offset 'items'

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Java

Getting wrong object name from sequelize.js include method in JSON response from data to datum

From Dev

Getting Parent node from Json object with Jquery

From Dev

Getting JSON from RetrofitError object using Retrofit

From Dev

Getting JSON Object from MVC Controller

From Dev

Getting data from an array in JSON data with Swift

From Dev

json decode - getting single array from object?

From Dev

Complex object not getting bound to JSON data

From Dev

Getting data from complex nested JSON object (using PHP)

From Dev

Getting json object data with react

From Dev

Not getting complete data from Json

From Dev

Getting null data from a JSON object

From Dev

Getting checkbox value from json object

From Dev

getting data from json file

From Dev

Getting data from JSON ( AngularJS)

From Dev

Getting a different data object on JavaScript or Json

From Dev

Not getting Data from JSON Call

From Dev

Getting data from nested JSON object !!WITH ID'S!! using angular GET

From Dev

Getting data from a json string

From Dev

Complex object not getting bound to JSON data

From Dev

Getting the data from json object in javascript

From Dev

Error in getting data from JSON Object

From Dev

getting specific data from an object

From Dev

Error in getting value from json object

From Dev

Getting image url from json object not working

From Dev

Getting Data from JSON with anystock

From Dev

getting nested data from JSON array object

From Dev

Getting Data from JSON Swift

From Dev

Getting child data from a JSON object in angular

From Dev

Getting data from json url