Want more features on Pastebin? Sign Up, it's FREE!
Guest

MyJSONParser.java

By: endermuabdib on Sep 6th, 2012  |  syntax: Java  |  size: 4.24 KB  |  views: 113  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package com.android.example;
  2.  
  3. import java.lang.reflect.Array;
  4. import java.lang.reflect.Field;
  5. import org.json.JSONArray;
  6. import org.json.JSONException;
  7. import org.json.JSONObject;
  8.  
  9. public class MyJSONParser {
  10.  
  11.     public static Object populateObjectFromJSON(Class<?> classname, JSONObject js) {
  12.                 Object obj = null;
  13.                 System.out.println("Populating " + classname.getSimpleName()+ " -with- " + js.toString());
  14.                 try {
  15.                         obj = classname.newInstance();
  16.                 } catch (InstantiationException e1) {
  17.                         System.err.println(e1.getMessage());
  18.                         return null;
  19.                 } catch (IllegalAccessException e1) {
  20.                         System.err.println(e1.getMessage());
  21.                         return null;
  22.                 }
  23.  
  24.                 Field[] fields = classname.getFields();
  25.                 for (Field f : fields) {
  26.                         try {
  27.                                 if (js.has(f.getName())) {
  28.                                                 String type = f.getType().getSimpleName();
  29.                                         if (type.equalsIgnoreCase("boolean")) {
  30.                                                 f.setBoolean(obj, js.getBoolean(f.getName()));
  31.                                         } else if (type.equalsIgnoreCase("int")) {
  32.                                                 f.setInt(obj, js.getInt(f.getName()));
  33.                                         } else if (type.equalsIgnoreCase("double")) {
  34.                                                 f.setDouble(obj, js.getDouble(f.getName()));
  35.                                         } else if (type.equalsIgnoreCase("float")) {
  36.                                                 f.setFloat(obj, (float) js.getDouble(f.getName()));
  37.                                         } else if (type.equalsIgnoreCase("string")) {
  38.                                                 f.set(obj, js.getString(f.getName()));
  39.                                         } else if (f.getType().isArray()) {
  40.                                                 // System.out.println("This is an ARRAY: " + f.getName());
  41.                                                 insertArrayFromJSON(obj, f, js.getJSONArray(f.getName()));
  42.                                         } else {
  43.                                                 f.set(obj,populateObjectFromJSON(f.getType(),js.getJSONObject(f.getName())));
  44.                                         }
  45.                                 }
  46.                         } catch (IllegalArgumentException e) {
  47.                                 System.err.println(e.getMessage());
  48.                         } catch (IllegalAccessException e) {
  49.                                 System.err.println(e.getMessage());
  50.                         } catch (JSONException e) {
  51.                                 System.err.println(e.getMessage());
  52.                         }
  53.                 }
  54.  
  55.                 return obj;
  56.     }
  57.  
  58.     public static void insertArrayFromJSON(Object obj, Field f, JSONArray js, int pos) throws IllegalArgumentException, NegativeArraySizeException, IllegalAccessException, JSONException {
  59.                 f.set(obj,Array.newInstance(f.getType().getComponentType(), js.length()));
  60.                 String type = f.getType().getComponentType().getSimpleName();
  61.                
  62.                 for (int i = 0; i < js.length(); i++) {
  63.                         if (f.getType().getComponentType().isArray()) {
  64.                                 System.out.println("An array!! " + f.getName());
  65.                                 //TO-DO
  66.                         } else if (!f.getType().getComponentType().isPrimitive()&& (!type.equalsIgnoreCase("string"))) {
  67.                                 //System.out.println(f.getType().getSimpleName() + " isn't primitive " + f.getName());
  68.                                 Array.set(f.get(obj),i,populateObjectFromJSON(f.getType().getComponentType(),js.getJSONObject(i)));
  69.                                 //Array.set(f.get(obj),i,populateObjectFromJSON(f.getType().getComponentType(), new JSONObject(js.getJSONArray(i).toString())));
  70.                         } else {
  71.                                 //Primitive
  72.                                 Array.set(f.get(obj), i, js.get(i));
  73.                         }
  74.                 }
  75.         }
  76.    
  77.     public static JSONObject parseObjectToJSONClass(Object obj) {JSONObject js = new JSONObject();
  78.                 Class<?> c = obj.getClass();
  79.                 Field[] fields = c.getFields();
  80.  
  81.                 for (Field f : fields) {
  82.                         try {
  83.                         System.out.println(f.getName() + " - "+ f.getType().getSimpleName() + " - " + f.get(obj));
  84.  
  85.                         String name = f.getName();
  86.                         String type = f.getType().getSimpleName();
  87.                         if (f.get(obj) != null) {
  88.                                 if (type.equalsIgnoreCase("boolean")) {
  89.                                         js.put(name, f.getBoolean(obj));
  90.                                 } else if (type.equalsIgnoreCase("int")) {
  91.                                         js.put(name, f.getInt(obj));
  92.                                 } else if (type.equalsIgnoreCase("double")) {
  93.                                         js.put(name, f.getDouble(obj));
  94.                                 } else if (type.equalsIgnoreCase("float")) {
  95.                                         js.put(name, f.getFloat(obj));
  96.                                 } else if (type.equalsIgnoreCase("string")) {
  97.                                         js.put(name, (String) f.get(obj));
  98.                                 } else if (type.endsWith("]")) {
  99.                                         JSONArray ar = new JSONArray();
  100.                                         for (int i = 0; i < Array.getLength(f.get(obj)); i++) {
  101.                                                 ar.put(i, Array.get(f.get(obj), i));
  102.                                         }
  103.                                         js.put(name, ar);
  104.                                 } else {
  105.                                 js.put(name, parseObjectToJSONClass(f.get(obj)));
  106.                                 }
  107.                         }
  108.                         } catch (IllegalArgumentException e) {
  109.                         System.err.println(e.getMessage());
  110.                         } catch (IllegalAccessException e) {
  111.                         System.err.println(e.getMessage());
  112.                         } catch (JSONException e) {
  113.                         System.err.println(e.getMessage());
  114.                         }
  115.                 }
  116.                 return js;
  117.     }
  118. }
clone this paste RAW Paste Data