// and columns updated
// this is so that multiple updates to the same cell overwrite
// previous deltas prior to submission
// we don't care about the property names, just the values, which
// we'll process in turn
JSONObject obj = new JSONObject(jsonData);
@SuppressWarnings("unchecked")
Iterator<String> keys = obj.keys();
while (keys.hasNext()) {
final String key = keys.next();
// data comes in: [row, col, oldValue, newValue]
JSONArray update = obj.getJSONArray(key);
final int row = update.getInt(0);
final int col = sheet.getMappedColumn(update.getInt(1));
final String newValue = update.getString(3);
sheet.setSubmittedValue(context, row, col, newValue);
}