JSONObject не имеет слишком много дополнительных издержек поверх HashMap. Если вы в порядке с использованием HashMap, тогда вы должны быть в порядке, используя JSONObject. Это при условии, что вы хотите создать JSON.
JSONObject проверяет правильность значений, которые вы храните как часть вашего JSONObject, чтобы убедиться, что он соответствует спецификации JSON. Например, Значения NaN не являются частью действительного JSON. Помимо этого, JSONObject может генерировать строки json (обычные | предварительно настроенные). Эти строки могут быть довольно большими, в зависимости от количества JSON. Кроме того, JSONObject использует StringBuffer, поэтому я хотел бы заменить все вхождения StringBuffer на StringBuilder.
JSONObject (из org.json) - одна из простых библиотек JSON, которую вы можете использовать. Если вы хотите что-то очень эффективное, используйте что-то вроде Джексона.