Можно использовать аннотацию Apache @Model для создания классов модели Java, представляющих структуру файлов JSON, и использовать их для доступа к различным элементам дерева JSON. В отличие от других решений эта работает полностью без отражения и поэтому подходит для сред, где отражение невозможно или имеет значительные накладные расходы.
Существует образец проекта Maven , показывающий использование. Прежде всего он определяет структуру:
@Model(className="RepositoryInfo", properties = {
@Property(name = "id", type = int.class),
@Property(name = "name", type = String.class),
@Property(name = "owner", type = Owner.class),
@Property(name = "private", type = boolean.class),
})
final class RepositoryCntrl {
@Model(className = "Owner", properties = {
@Property(name = "login", type = String.class)
})
static final class OwnerCntrl {
}
}
, а затем использует сгенерированные классы RepositoryInfo и Owner для анализа предоставленного входного потока и выбора определенной информации при этом:
List repositories = new ArrayList<>();
try (InputStream is = initializeStream(args)) {
Models.parse(CONTEXT, RepositoryInfo.class, is, repositories);
}
System.err.println("there is " + repositories.size() + " repositories");
repositories.stream().filter((repo) -> repo != null).forEach((repo) -> {
System.err.println("repository " + repo.getName() +
" is owned by " + repo.getOwner().getLogin()
);
})
Вот и все! В дополнение к этому здесь live gist показывает аналогичный пример вместе с асинхронной сетевой связью.
insert into category(category_name,category_image) values('tablette', bytea('D:\image.jpg'));
Вышеупомянутое решение работает, если тип столбца является bytea
insert into category(category_name,category_image) values('tablette', lo_import('D:\image.jpg'));
Вышеупомянутое решение работает, если тип столбца является oid, т. е. Blob
insert into category(category_name,category_image) values('tablette',decode('HexStringOfImage',hex));
Вышеупомянутый декодирование функция принимает два параметра. Первый параметр - HexString для изображения. Второй параметр - hex по умолчанию. Функция декодирования скрывает шестнадцатеричную строку в байтах и сохраняет в столбце данных типа bytea в postgres.