Ошибка анализа JSON: невозможно создать экземпляр `java.util.LinkedHashMap` без метода строкового аргумента для десериалJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка анализа JSON: невозможно создать экземпляр `java.util.LinkedHashMap` без метода строкового аргумента для десериал

Сообщение Anonymous »

В настоящее время я работаю над серверной частью электронной коммерции с пружинной загрузкой и интерфейсом на Angular. Вот точное сообщение об ошибке:

Код: Выделить всё

2024-11-22T15:47:36.290+01:00  WARN 12532 --- [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('{"par1":"par2"}')]
Ошибка возникает, когда я пытаюсь добавить в хранилище новый элемент с параметрами с типом поля Map, который десериализуется неправильно. Все, что у меня есть, это ошибка 400 (неверный запрос).
Изображение

Мне хотелось бы видеть отправленный в запросе JSON, но я не могу ничего зарегистрировать в консоли, от уровня службы до уровня контроллера.

Код: Выделить всё

    @RequestMapping(method = RequestMethod.POST)
public ResponseEntity save(@RequestBody ProductFormDTO productFormDTO) {
System.out.println("Received ProductFormDTO: " + productFormDTO);
return productMediator.saveProduct(productFormDTO);
}
Похоже, что метод останавливается на первой строке метода, он даже не переходит к строке печати.
В ProductEntity< /code> поле параметров определяется следующим образом:

Код: Выделить всё

    @Column(columnDefinition = "jsonb")
private Map parameters;
То же самое в ProductDTO и ProductFormDTO

Код: Выделить всё

    private Map parameters;
Ниже я показываю свой метод saveProduct в медиаторе:

Код: Выделить всё

    public ResponseEntity saveProduct(ProductFormDTO productFormDTO) {
try{
ProductEntity product = formToProductEntity.toProductEntity(productFormDTO);
categoryService.findCategoryByShortID(product.getCategory().getShortId()).ifPresentOrElse(product::setCategory,()->{
throw new CategoryDontExistException();
});
productService.createProduct(product);
return ResponseEntity.ok(new Response("Successful created a product"));
}catch (RuntimeException e){
e.printStackTrace();
return ResponseEntity.status(400).body(new Response("Can't create product category don't exist"));
}
}
и сервис:

Код: Выделить всё

    @Transactional
public void createProduct(ProductEntity product) {
logger.info("Creating product with details: {}", product);

if (product != null) {
product.setCreateAt(LocalDate.now());
product.setUid(UUID.randomUUID().toString());
product.setActivate(true);
productRepository.save(product);

for (String uuid : product.getImageUrls()) {
activateImage(uuid);
}

logger.info("Product created successfully with UID: {}", product.getUid());
return;
}
throw new RuntimeException("Product is null, cannot create.");
}
Регистратор не работает.
Знаете ли вы, в чем проблема, или, возможно, можете узнать, какой именно JSON отправляется? в запросе? Вероятно, у него неправильное форматирование. Я попробовал RequestLoggingFilter с @WebFilter("/*"), но это не сработало, у меня ничего не было в консоли.
Я тоже уверен что параметры поля в базе данных правильно установлены в jsonb в PostgreSQL.
Изображение

ps. Раньше это работало, но перестало работать с тех пор, как я изменил тип поля параметров со String на Map.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ap-no-stri
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»