6

I have a JSON file and I would like to print that object in JSON:

JSON

[{"text": "Aachen, Germany - Aachen/Merzbruck (AAH)"}, {"text": "Aachen, Germany - Railway (ZIU)"}, {"text": "Aalborg, Denmark - Aalborg (AAL)"}, {"text": "Aalesund, Norway - Vigra (AES)"}, {"text": "Aarhus, Denmark - Aarhus Airport (AAR)"}, {"text": "Aarhus Limo, Denmark - Aarhus Limo (ZBU)"}, {"text": "Aasiaat, Greenland - Aasiaat (JEG)"}, {"text": "Abadan, Iran - Abadan (ABD)"}]

I have tried with following method,

<?php   
  $jsonurl='http://website.com/international.json'; 
  $json = file_get_contents($jsonurl,0,null,null);  
  $json_output = json_decode($json);        
  foreach ($json_output as $trend)  
  {         
   echo "{$trend->text}\n";     
  } 
?>

but it didn't work:

Fatal error: Call to undefined function var_dup() in /home/dddd.com/public_html/exp.php on line 5

Can anyone help me understand what I'm doing wrong?

12
  • did you var_dump($json_output); to see what you get? And to see whether json_decode makes an array out of your data? Commented Jun 25, 2013 at 8:55
  • 2
    "It does not work" is not a valid PHP error message though. Commented Jun 25, 2013 at 8:56
  • @quidage meant var_dump($json_output) - or alternatively simply print_r($json_output) Commented Jun 25, 2013 at 8:56
  • These links might help you: stackoverflow.com/questions/9138625/how-to-process-json-in-php stackoverflow.com/questions/9597941/how-to-echo-json-in-php Commented Jun 25, 2013 at 8:56
  • Fatal error: Call to undefined function var_dup() in /home/dddd.com/public_html/exp.php on line 5 Commented Jun 25, 2013 at 8:58

5 Answers 5

7
<?php   

  $jsonurl='http://website.com/international.json'; 
  $json = file_get_contents($jsonurl,0,null,null);  
  $json_output = json_decode($json, JSON_PRETTY_PRINT); 
  echo $json_output;
?>

by using JSON_PRETTY_PRINT u transform your json to pretty formatting, using json_decode($json, true) doesn't reformat your json to PRETTY formatted output, also you don't have to run loop over all keys to export same JSON object again, you could use those constants also which could clean up your json object before exporting it.

json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
Sign up to request clarification or add additional context in comments.

3 Comments

While this answer is probably correct and useful, it is preferred if you include some explanation along with it to explain how it helps to solve the problem. This becomes especially useful in the future, if there is a change (possibly unrelated) that causes it to stop working and users need to understand how it once worked. Thanks!
thanks for your comment, i will update my answer with more explanation :)
@Mortgy this doesn't work with json_decode directly, you need something like this: json_encode(json_decode($json_ugly), JSON_PRETTY_PRINT); taken from: link
4

use

$json_output = json_decode($json, true);

by default json_decode give OBJECT type but you are trying to access it as Array, so passing true will return an array.

Read documentation : http://php.net/manual/en/function.json-decode.php

Comments

0

Try this code:

<?php   
  $jsonurl='http://website.com/international.json'; 
  $json = file_get_contents($jsonurl,0,null,null);  
  $json_output = json_decode($json, true);        
  foreach ($json_output as $trend){         
   echo $trend['text']."\n";     
  } 
?>

Thanks, Dino

3 Comments

Warning: Invalid argument supplied for foreach() in /home/website/public_html/exp.php on line 6
There is a problem in your JSON which you download from that URL. Please double check if JSON is valid.
This codes works without problems:<?php $json = '[{ "text": "Aachen, Germany - Aachen/Merzbruck (AAH)"}, { "text": "Aachen, Germany - Railway (ZIU)"}, { "text": "Aalborg, Denmark - Aalborg (AAL)"}, { "text": "Aalesund, Norway - Vigra (AES)"}, { "text": "Aarhus, Denmark - Aarhus Airport (AAR)"}, { "text": "Aarhus Limo, Denmark - Aarhus Limo (ZBU)"}, { "text": "Aasiaat, Greenland - Aasiaat (JEG)"}, { "text": "Abadan, Iran - Abadan (ABD)"}]'; $json_output = json_decode($json, true); foreach ($json_output as $trend){ echo $trend['text']."\n"; } ?>
0
$data=[{"text": "Aachen, Germany - Aachen/Merzbruck (AAH)"}, {"text": "Aachen, Germany - Railway (ZIU)"}, {"text": "Aalborg, Denmark - Aalborg (AAL)"}, {"text": "Aalesund, Norway - Vigra (AES)"}, {"text": "Aarhus, Denmark - Aarhus Airport (AAR)"}, {"text": "Aarhus Limo, Denmark - Aarhus Limo (ZBU)"}, {"text": "Aasiaat, Greenland - Aasiaat (JEG)"}, {"text": "Abadan, Iran - Abadan (ABD)"}]
$obj = json_decode($data);
$text = $obj[0]->text;

This will work.

Comments

0

JSON_FORCE_OBJECT in your json call eg :

$obj = json_decode($data);

Instead write like this:

$obj = json_decode($data, JSON_FORCE_OBJECT);

1 Comment

Hi Vishal. I've made a suggested edit to your answer to format the code. If possible could you also provide details as to what the fix is doing? Thanks!

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.