0

I want to decode a json code in php to print_r(); but i get following error:

Line : 2 -- syntax error, unexpected '{', expecting ']'

And json look like :

$json = [{"scan_detail":[{"scan_no":"546815648","status_code":"100","status":"PICKUP DONE","status_description":"PICKUP DONE","remarks":"PICKUP DONE FROM MIRA ROAD BRANCH","updated_date":"2019-11-26 20:06:16"},{"scan_no":"546815648","status_code":"I101","status":"IN-TRANSIT","status_description":"SHIPMENT SCAN IN BAG","remarks":"SHIPMENT INSERTED IN BAG AT MIRA ROAD BRANCH","updated_date":"2019-11-26 20:06:17"},{"scan_no":"546815648","status_code":"101","status":"IN-TRANSIT","status_description":"BAG DISPATCHED FOR ORIGIN HUB","remarks":"DISPATCHED FOR MUMBAI AIR HUB (ORIGIN HUB)","updated_date":"2019-11-26 20:06:27"}]}];

and i print json like

$json = json_decode($json);
echo '<pre>' .print_r($json) .'</pre>';
Milind
  • 13
  • 4
  • 1
    This is not a json **string**. `$json = [{"foo": "bar"}];` is a **syntax error**. However, `$json = '[{"foo": "bar"}]';` is indeed a json **string** (notice the single quotes around) – Cid Nov 28 '19 at 10:22
  • 1
    Add ' before and end string like this.Eg. $json = '[{....}]'; , See my Answer comment. – HP371 Nov 28 '19 at 10:22
  • You can use some tool like https://jsonlint.com/ for example to test if your string as right JSON format. Here if you test it you can see it's ok, so the problem is the lack of `'...'` to make it a string and not an array ! – Mickaël Leger Nov 28 '19 at 10:43

2 Answers2

0

Write json string like below.

$json = '[{"scan_detail":[{"scan_no":"546815648","status_code":"100","status":"PICKUP DONE","status_description":"PICKUP DONE","remarks":"PICKUP DONE FROM MIRA ROAD BRANCH","updated_date":"2019-11-26 20:06:16"},{"scan_no":"546815648","status_code":"I101","status":"IN-TRANSIT","status_description":"SHIPMENT SCAN IN BAG","remarks":"SHIPMENT INSERTED IN BAG AT MIRA ROAD BRANCH","updated_date":"2019-11-26 20:06:17"},{"scan_no":"546815648","status_code":"101","status":"IN-TRANSIT","status_description":"BAG DISPATCHED FOR ORIGIN HUB","remarks":"DISPATCHED FOR MUMBAI AIR HUB (ORIGIN HUB)","updated_date":"2019-11-26 20:06:27"}]}]';
$json = json_decode($json,true);
foreach($json as $value_first){
    foreach($value_first['scan_detail'] as $value_two){
            print_r($value_two['scan_no']);
            echo "\n";
    }
}

?>
HP371
  • 860
  • 11
  • 24
0

Add ' in your json string like this,

$json = '[{"scan_detail":[{"scan_no":"546815648","status_code":"100","status":"PICKUP DONE","status_description":"PICKUP DONE","remarks":"PICKUP DONE FROM MIRA ROAD BRANCH","updated_date":"2019-11-26 20:06:16"},{"scan_no":"546815648","status_code":"I101","status":"IN-TRANSIT","status_description":"SHIPMENT SCAN IN BAG","remarks":"SHIPMENT INSERTED IN BAG AT MIRA ROAD BRANCH","updated_date":"2019-11-26 20:06:17"},{"scan_no":"546815648","status_code":"101","status":"IN-TRANSIT","status_description":"BAG DISPATCHED FOR ORIGIN HUB","remarks":"DISPATCHED FOR MUMBAI AIR HUB (ORIGIN HUB)","updated_date":"2019-11-26 20:06:27"}]
}]';
echo "<pre>";
print_r(json_decode($json));

//EDITED

To GET scan_no

$result = json_decode($json);
print_r($result);
foreach($result[0]->scan_detail as $val){
   echo $val->scan_no;
   echo '<br/>';
}

OUTPUT

546815648
546815648
546815648
Vaibhavi S.
  • 1,083
  • 7
  • 20