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