Advertisement
NeutronStars_

JSONWriter

Feb 15th, 2019
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.97 KB | None | 0 0
  1. package your.package;
  2.  
  3. import org.json.JSONArray;
  4. import org.json.JSONObject;
  5.  
  6. import java.io.*;
  7.  
  8. /**
  9.  * Created by NeutronStars on 14/07/2017
  10.  */
  11. public final class JSONWriter implements Closeable
  12. {
  13.     private final BufferedWriter writer;
  14.     private int space;
  15.  
  16.     public JSONWriter(String path) throws IOException
  17.     {
  18.         this(new File(path));
  19.     }
  20.  
  21.     public JSONWriter(File file) throws IOException
  22.     {
  23.         this(new FileWriter(file));
  24.     }
  25.  
  26.     public JSONWriter(Writer writer)
  27.     {
  28.         this(new BufferedWriter(writer));
  29.     }
  30.  
  31.     public JSONWriter(BufferedWriter writer)
  32.     {
  33.         this.writer = writer;
  34.     }
  35.  
  36.     public void write(JSONArray array) throws IOException
  37.     {
  38.         writer.write("[");
  39.         writer.newLine();
  40.  
  41.         this.space+=2;
  42.         String space = spaceBuilder();
  43.  
  44.         for(int i = 0; i < array.length(); i++)
  45.         {
  46.             Object object = array.get(i);
  47.  
  48.             if(object instanceof Number || object instanceof Boolean) writer.write(space+object);
  49.             else if(object instanceof JSONObject) write((JSONObject) object, true);
  50.             else if(object instanceof JSONArray) write((JSONArray) object);
  51.             else writer.write(space+"\""+object.toString()+"\"");
  52.  
  53.             if(i < array.length()-1) writer.write(",");
  54.             writer.newLine();
  55.         }
  56.  
  57.         this.space-=2;
  58.         space = spaceBuilder();
  59.  
  60.         writer.write(space+"]");
  61.     }
  62.  
  63.     private void write(JSONObject jsonObject, boolean spacing) throws IOException
  64.     {
  65.         writer.write((spacing ? spaceBuilder() : "") + "{");
  66.         writer.newLine();
  67.  
  68.         this.space+=2;
  69.         String space = spaceBuilder();
  70.  
  71.         int i = 0;
  72.         final int max = jsonObject.length();
  73.  
  74.         for(String key : jsonObject.keySet())
  75.         {
  76.             writer.write(space+"\""+key+"\":");
  77.             Object object = jsonObject.get(key);
  78.  
  79.             if(object instanceof Number || object instanceof Boolean) writer.write(object.toString());
  80.             else if(object instanceof JSONObject) write((JSONObject) object, false);
  81.             else if(object instanceof JSONArray) write((JSONArray) object);
  82.             else writer.write("\""+object.toString()+"\"");
  83.  
  84.             if(i < max-1) writer.write(",");
  85.             i++;
  86.  
  87.             writer.newLine();
  88.         }
  89.  
  90.         this.space-=2;
  91.         space = spaceBuilder();
  92.  
  93.         writer.write(space+"}");
  94.     }
  95.  
  96.     public void write(JSONObject jsonObject) throws IOException
  97.     {
  98.         write(jsonObject, false);
  99.     }
  100.  
  101.     private String spaceBuilder()
  102.     {
  103.         StringBuilder builder = new StringBuilder();
  104.         for(int i = 0; i < space; i++) builder.append(" ");
  105.         return builder.length() == 0 ? "" : builder.toString();
  106.     }
  107.  
  108.     public void flush() throws IOException
  109.     {
  110.         writer.flush();
  111.     }
  112.  
  113.     public void close() throws IOException
  114.     {
  115.         writer.close();
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement