Java tutorial
/** * ClarescoExperienceAPI * Copyright * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * Please contact Claresco, www.claresco.com, if you have any questions. **/ package com.claresco.tinman.json; import java.io.BufferedReader; import java.io.FileReader; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import com.claresco.tinman.lrs.XapiActivity; import com.claresco.tinman.lrs.XapiContextActivities; import com.claresco.tinman.lrs.XapiScore; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.sun.org.apache.bcel.internal.generic.NEWARRAY; /** * XapiContextActivitiesJson.java * * * * * * @author rheza * on Mar 5, 2014 * */ public class XapiContextActivitiesJson implements JsonSerializer<XapiContextActivities>, JsonDeserializer<XapiContextActivities> { /* (non-Javadoc) * @see com.google.gson.JsonSerializer#serialize(java.lang.Object, java.lang.reflect.Type, com.google.gson.JsonSerializationContext) */ @Override public JsonElement serialize(XapiContextActivities arg0, Type arg1, JsonSerializationContext arg2) { JsonObject result = new JsonObject(); JsonArray theParentArray = new JsonArray(); if (arg0.hasParent()) { for (XapiActivity activity : arg0.getParent()) { theParentArray.add(arg2.serialize(activity)); } result.add("parent", theParentArray); } JsonArray theGroupingArray = new JsonArray(); if (arg0.hasGrouping()) { for (XapiActivity activity : arg0.getGrouping()) { theGroupingArray.add(arg2.serialize(activity)); } result.add("grouping", theGroupingArray); } if (arg0.hasCategory()) { JsonArray theCategoryArray = serialize(arg0.getCategory(), arg2); if (theCategoryArray != null) { result.add("category", theCategoryArray); } } if (arg0.hasOther()) { JsonArray theOtherArray = serialize(arg0.getOther(), arg2); if (theOtherArray != null) { result.add("other", theOtherArray); } } return result; } /* (non-Javadoc) * @see com.google.gson.JsonDeserializer#deserialize(com.google.gson.JsonElement, java.lang.reflect.Type, com.google.gson.JsonDeserializationContext) */ @Override public XapiContextActivities deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2) throws JsonParseException { // TODO Auto-generated method stub JsonObject theContextActivities = JsonUtility.convertJsonElementToJsonObject(arg0); ArrayList<XapiActivity> theParent = new ArrayList<XapiActivity>(); ArrayList<XapiActivity> theGrouping = new ArrayList<XapiActivity>(); ArrayList<XapiActivity> theCategory = new ArrayList<XapiActivity>(); ArrayList<XapiActivity> theOther = new ArrayList<XapiActivity>(); theParent = JsonUtility.convertJsonArrayOfActivities(theContextActivities, "parent", theParent, arg2); theGrouping = JsonUtility.convertJsonArrayOfActivities(theContextActivities, "grouping", theGrouping, arg2); theCategory = JsonUtility.convertJsonArrayOfActivities(theContextActivities, "category", theCategory, arg2); theOther = JsonUtility.convertJsonArrayOfActivities(theContextActivities, "other", theOther, arg2); if (theParent.isEmpty()) { theParent = null; } if (theGrouping.isEmpty()) { theGrouping = null; } if (theCategory.isEmpty()) { theCategory = null; } if (theOther.isEmpty()) { theOther = null; } XapiContextActivities myContextActivities = new XapiContextActivities(theParent, theGrouping, theCategory, theOther); if (myContextActivities.isEmpty()) { return null; } return myContextActivities; } private JsonArray serialize(ArrayList<XapiActivity> theActivityArray, JsonSerializationContext theSerializationContext) { JsonArray theArray = new JsonArray(); for (XapiActivity activity : theActivityArray) { theArray.add(theSerializationContext.serialize(activity, XapiActivity.class)); } if (theArray.size() == 0) { return null; } return theArray; } public static void main(String[] args) { Gson gson = JsonUtility.createGson(); String path = "/Users/rheza/Documents/workspace/ClarescoExperienceAPI/src/com/claresco/tinman/json/ContextActivities.json"; try { BufferedReader bf = new BufferedReader(new FileReader(path)); XapiContextActivities s = gson.fromJson(bf, XapiContextActivities.class); System.out.println(s); System.out.println(gson.toJson(s)); } catch (Exception e) { e.printStackTrace(); } } }