0

I want to get id,url,img and title of videos in the JSON data.My current code doesn't output anything could any one tell me what i am doing wrong.Thanks

$code2 = stripslashes($_POST['outputtext']);
$data = json_decode($code2, true);
$i = 0;

foreach($data->videos as $values)
{
    echo $values->id . "\n";
    echo $values->url . "\n";
    echo $values->img . "\n";
    echo $values->title . "\n";
$i++;
}

data:

{
    "cat": {
        "id": "1234567",
        "source_id": null,
        "title_en": "first season",
        "description_en": "This is spring category ",
    },
    "videos": [{
        "id": "312412343",
        "url": "\/2015-07-17\/1abcd.mp4",
        "img": "image\/44\/\/2015-07-17\/1abcd.jpg",
        "title": "first",

    }, {
        "id": "2342343",
        "url": "\/2015-07-16\/2dcdeg.mp4",
        "img": "images\/44\/\/2015-07-16\/2dcdeg.jpg",
        "title": "second",


    }];


}

validated json data:

{
   "cat":{
      "id":"1234567",
      "source_id":null,
      "title_en":"first season",
      "description_en":"This is spring category "
   },
   "videos":[
      {
         "id":"312412343",
         "url":"\/2015-07-17\/1abcd.mp4",
         "img":"image\/44\/\/2015-07-17\/1abcd.jpg",
         "title":"first"
      },
      {
         "id":"2342343",
         "url":"\/2015-07-16\/2dcdeg.mp4",
         "img":"images\/44\/\/2015-07-16\/2dcdeg.jpg",
         "title":"second"
      }
   ]
}
4
  • Probably it does not output anything because you try to access an array like an object. Commented Aug 30, 2016 at 18:56
  • $data = json_decode($code2, true); return array not object Commented Aug 30, 2016 at 18:57
  • 1
    your data is not valid json json.parser.online.fr Commented Aug 30, 2016 at 19:23
  • Funk Doc . I updated my first post now the json is validated . How to parse the data i want ? Commented Aug 31, 2016 at 17:17

1 Answer 1

4

Because you call

$data = json_decode($code2, true);

your $data is an array and not an object as you try to access it. So either access it as regular array, or change 2nd argument of json_decode() to false (or removeit as this is default), as this is what controls conversion behavior.

See docs: http://php.net/manual/en/function.json-decode.php

Your data is not a valid JSON (; at the end, redundant and missing comas - it's simply broken).

In case of such problems, var_dump() is pretty helpful to inspect what data you are really working with.

Sign up to request clarification or add additional context in comments.

7 Comments

Thanks for replies. Marcin Orlowski i changed the second argument of json_decode to false but still i get no data!
i used var_dump($data) i get null! so how to get the data i want ?because the method that i use is not working!
I told you your JSON is invalid in first place!
i get the data via an api call so how i can parse the data i want if it is not valid json ?
JSON format is quite strict and PHP will not parse syntactically invalid JSON (check here: jsonformatter.curiousconcept.com )The one from your question has at least 2 syntax errors. If any API produces this, then the API needs to be fixed. Fixing this JSOn in your code is bad idea.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.