JSON stands for (Java Script Object Notation) and it's a simple and light-weight data interchange format. A JSON object is an unordered set of key/value pairs. A JSON array is an ordered collection of values.
I'm going to use org-json-java.
Simple example with json object creation
// import org.json.JSONException; // import org.json.JSONObject; try { JSONObject jsonObj = new JSONObject(); jsonObj.put("name", "John"); jsonObj.put("age", "29"); System.out.println(jsonObj.toString()); } catch(JSONException ex) { ex.printStackTrace(); }
You can compile example with following command
javac -cp org.json-20120521.jar J.java && java -cp .:org.json-20120521.jar J
For extractng JSON from string use next statements
JSONObject json = new JSONObject(jsonString); String name = json.getString("name"); int age = json.getString("age");
The org.json.JSONArray
class represents an array. Each element in the array can be accessed using index.
String jsonString = "{ \"number\": [1, 2, 3, 4] }"; JSONObject obj = new JSONObject(jsonString); JSONArray arr = obj.getJSONArray("number"); for (int i = 0; i < arr.length(); i++) System.out.println(arr.getInt(i));
Write JSON object to file
// import java.io.FileWriter; // import java.io.IOException; try { FileWriter file = new FileWriter("/home/proft/temp/tmp.json"); file.write(jsonObj.toJSONString()); file.flush(); file.close(); } catch (IOException e) { e.printStackTrace(); }
Read JSON object from file
// import org.json.JSONObject; // import org.json.JSONTokener; // import java.io.FileNotFoundException; // import java.io.FileReader; // import java.io.IOException; try { FileReader reader = new FileReader("/home/proft/temp/tmp.json"); JSONTokener tokener = new JSONTokener(reader); JSONObject obj = new JSONObject(tokener); System.out.println(obj.getString("name")); } catch (IOException e) { e.printStackTrace(); }
Read JSON object from URL
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.Reader; import java.net.URL; import java.nio.charset.Charset; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class J { public static void main(String args[]) { try { JSONArray json = readJsonFromUrl("http://url.com/api/objects/?format=json"); JSONObject obj = (JSONObject)json.get(5); System.out.println(obj.get("title")); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } } public static String readAll(Reader rd) throws IOException { StringBuilder sb = new StringBuilder(); int cp; while ((cp = rd.read()) != -1) { sb.append((char) cp); } return sb.toString(); } public static JSONArray readJsonFromUrl(String url) throws IOException { // String s = URLEncoder.encode(url, "UTF-8"); // URL url = new URL(s); InputStream is = new URL(url).openStream(); JSONArray json = null; try { BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); String jsonText = readAll(rd); json = new JSONArray(jsonText); } catch (JSONException e) { e.printStackTrace(); } finally { is.close(); } return json; } }
With Python 2.6+ we can prettify our JSON in terminal
echo '{"name":"John","age":"29"}' | python -mjson.tool