当前位置: 首页 > 知识库问答 >
问题:

如何在Spring boot中从泛型参数(与任何类无关)中获取值

荆乐
2023-03-14

我是某人的新人

我陷入了需要从amount变量中获取值的境地,而amount变量实际上不是任何类的一部分。如果你认为标题与主题不符,任何人都可以更改标题。我在下面提到的课程,你会发现我的努力是无用的,因为它似乎一团糟。如果有人能纠正或给我相同问题所在的参考堆栈,我将不胜感激。

一个ccount.java

    private Long id;
    private int accountNumber;
    private BigDecimal accountBalance;

AccountRepository

 public interface AccountDao extends CrudRepository<Account, Long> {
  Account findByAccountNumber(int accountNumber);
 }

会计服务

public interface AccountService {
void deposit(int accountNumber, String accountType, double amount);
} // these fields are not related to class field, I took this to send data to API

客户服务

public void deposit(String accountType, int accountNumber, double amount) {
    if (accountType.equalsIgnoreCase("Permanent")) {
        Account account = accountRepository.findByAccountNumber(accountNumber);
        account.setAccountBalance(account.getAccountBalance().add(new 
        BigDecimal(amount)));
        accountDao.save(account);

会计控制器

 @PostMapping("/deposit")
   public ResponseEntity<Object> depositPost(@RequestBody double amount, String accountType, 
   int accountNumber, Account account){
   accountService.deposit(accountType, accountNumber, 
   Double.parseDouble(String.valueOf(amount)));
   return ResponseEntity.ok("Record has been entered");

}

我收到的错误是:

  2021-10-21 20:19:58.660  WARN 22892 --- [nio-8088-exec-1] 
  .w.s.m.s.DefaultHandlerExceptionResolver : Resolved 
  [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: 
  Cannot deserialize value of type `double` from Object value (token 
  `JsonToken.START_OBJECT`); nested exception is 
  com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of 
  type `double` from Object value (token `JsonToken.START_OBJECT`)
  at [Source: (PushbackInputStream); line: 1, column: 1]]

共有1个答案

邵兴文
2023-03-14

问题是你的帖子主体。我猜您将发送类似以下内容:

{
   "amount": 1000
}

这是一个JSON对象,无法反序列化为简单的双参数。您需要创建一个相应的类,如下所示:

public class AccountDto {
   private double amount;

   // constructor, getters, setters
}

现在,您需要在控制器中使用它:

@PostMapping("/deposit")
public ResponseEntity<Object> depositPost(@RequestBody AccountDto accountDto, String accountType, int accountNumber, Account account){
    accountService.deposit(accountType, accountNumber, accountDto.getAmount());
    return ResponseEntity.ok("Record has been entered");
}
 类似资料:
  • 问题内容: 该问题的可接受答案描述了如何在类中创建的实例。这涉及将参数传递给构造函数并从中调用方法。 然后创建的新实例,并传递参数。 如果新类的泛型类型参数不是某个已知类,但它本身是泛型类型参数,该怎么办?假设我还有其他班级,我想从该班级内部创建一个新实例。然后,如果尝试传递,则会收到以下编译器错误: 有没有办法解决? 对我来说触发错误的代码是: 发生错误,是因为我不会写。还有其他传递相同信息的方

  • 这个问题的公认答案描述了如何在类中创建的实例。这涉及将参数传递给构造函数,并从中调用方法。 然后创建的新实例,并传入参数。 对我来说,触发错误的特定代码位是: 错误发生,因为我不能编写。还有其他方式传递同样的信息吗?

  • 只能在类文本的左侧使用类 是否可以像在C#中那样对泛型参数提供类约束,或者是否可以使用其他语法来获取泛型参数的类型信息?

  • 问题内容: 我刚刚了解了这种美观的语法 用可能是类型的元素来清空。Java的源代码如下所示: 现在,如果我以这种方式编写了一个泛型类型不出现在参数列表中的方法,那么有什么方法可以访问成为的实际类呢? 我的意思是,到目前为止,我编码同一件事的方法是 如果删除了-parameter,我将无法执行。显然我可以 但这给了我通常的警告。好的,在这里有帮助,但是实际上我想对方法的预期返回类型做些事情。如果我添

  • 我有一个类,它将我的jpa实体转换为到,反之亦然。 当我在方法中进行转换时,返回的是,我需要它是。 是否可以迭代此集合()并获取“to”值? 转炉 转炉生产者

  • 问题内容: 通常,我见过人们像这样使用类文字: 但是,如果类型是通用类型,例如List,该怎么办?这可以正常工作,但由于应将List参数化,因此发出警告: 那么为什么不添加一个<?>呢?好吧,这会导致类型不匹配错误: 我想像这样的事情会起作用,但这只是一个普通的语法错误: 如何获得Class >静态信息,例如使用类文字? 我可以使用,以摆脱在第一个例子中所造成的非参数使用列表,警告的,但我宁愿不要