Как засунуть HashMap в JobParameters
В Spring Batch я создаю
JobParametersBuilder jobBuilder= new JobParametersBuilder();
jobBuilder.addString("filename", "file1");
jobBuilder.addString("studentName","Piter");
...
JobParameters jobParameters =jobBuilder.toJobParameters();
Который потом извлекаю из него в ItemWriter
final Map<String, JobParameter> parameters =
stepExecution.getJobExecution().getJobParameters().getParameters();
String filename = parameters.get("filename").toString();
Все было хорошо пока мне не понадобилось добавить
Map<String, String> properties = new HashMap<>:
добавил вот так:
final JobParametersBuilder properties= new JobParametersBuilder();
for (Map.Entry<String, String> entry : properties.entrySet()) {
paramsProp.addString(entry.getKey(), entry.getValue());
}
jobBuilder.addJobParameters(paramsProp.toJobParameters())
Вот только теперь как это все извлечь с учетом моих строковых полей?
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Не усложняйте жизнь. Сделайте просто, добавьте в название ключа индикатор отдельного объекта и также продолжайте вставлять в jobBuilder
Map<String, String> properties = new HashMap<>();
for (Map.Entry<String, String> entry : properties.entrySet()) {
jobBuilder.addString("$properties_" + entry.getKey(), entry.getValue());
}
при считывании проверьте содержит ли ключ этот индикатор "$properties_", удаляете его и создаете ваш
Map<String, String> properties = new HashMap<>();
обратно из этих ключей.
Другой вариант
Map<String, String> properties = new HashMap<>();
переведите JSONObject
JSONObject propertiesJson = new JSONObject(properties);
jobBuilder.addString("$properties", propertiesJson.toString());
обратно также просто, переводите в JSONObject и конвертируете в HashMap