Save JSON outputted from a URL to a file
43,946
Solution 1
This is easy in any language, but the mechanism varies. With wget and a shell:
wget 'http://search.twitter.com/search.json?q=hi' -O hi.json
To append:
wget 'http://search.twitter.com/search.json?q=hi' -O - >> hi.json
With Python:
urllib.urlretrieve('http://search.twitter.com/search.json?q=hi', 'hi.json')
To append:
hi_web = urllib2.urlopen('http://search.twitter.com/search.json?q=hi');
with open('hi.json', 'ab') as hi_file:
hi_file.write(hi_web.read())
Solution 2
In PHP:
$outfile= 'result.json';
$url='http://search.twitter.com/search.json?q=hi';
$json = file_get_contents($url);
if($json) {
if(file_put_contents($outfile, $json, FILE_APPEND)) {
echo "Saved JSON fetched from “{$url}” as “{$outfile}”.";
}
else {
echo "Unable to save JSON to “{$outfile}”.";
}
}
else {
echo "Unable to fetch JSON from “{$url}”.";
}
Solution 3
You can use CURL
curl -d "q=hi" http://search.twitter.com -o file1.txt
Solution 4
Here's the (verbose ;) ) Java variant:
InputStream input = null;
OutputStream output = null;
try {
input = new URL("http://search.twitter.com/search.json?q=hi").openStream();
output = new FileOutputStream("/output.json");
byte[] buffer = new byte[1024];
for (int length = 0; (length = input.read(buffer)) > 0;) {
output.write(buffer, 0, length);
}
// Here you could append further stuff to `output` if necessary.
} finally {
if (output != null) try { output.close(); } catch (IOException logOrIgnore) {}
if (input != null) try { input.close(); } catch (IOException logOrIgnore) {}
}
See also:
Solution 5
In shell:
wget -O output.json 'http://search.twitter.com/search.json?q=hi'
Related videos on Youtube
Comments
-
Skizit over 3 years
How would I save JSON outputted by an URL to a file?
e.g from the Twitter search API (this http://search.twitter.com/search.json?q=hi)
Language isn't important.
edit // How would I then append further updates to EOF?
edit 2// Great answers guys really, but I accepted the one I thought was the most elegant.
-
Ignacio Vazquez-Abrams almost 14 yearsJust output to stdout (
-
) and use the append redirection operator (>>
).