反序列化BankAccount对象时出现条带InvalidDefinitionException-Java

反序列化BankAccount对象时出现条带InvalidDefinitionException-Java,java,stripe-payments,deserialization,fasterxml,Java,Stripe Payments,Deserialization,Fasterxml,简言之,我有一个问题,我正在尝试返回到客户端/前端 HashMap<String, Object> response = new HashMap<String, Object>(); HashMap<String, Object> payload = new HashMap<String, Object>(); HashMap<String, Object> retrieveParams = new HashMap<>();

简言之,我有一个问题,我正在尝试返回到客户端/前端

HashMap<String, Object> response = new HashMap<String, Object>();
HashMap<String, Object> payload = new HashMap<String, Object>();
HashMap<String, Object> retrieveParams = new HashMap<>();

List<String> expandList = new ArrayList<>();

expandList.add("sources");
retrieveParams.put("expand", expandList);

customer = Customer.retrieve("cus_JHnmRG1q0aI3wt", retrieveParams, null);
         
BankAccount bankaccount = (BankAccount) customer.getSources().retrieve(customer.getMetadata().get("source"));
                 

payload.put("payment", bankaccount);   /*** Creates Error***/


response.put("payload", payload);         

return new ResponseEntity<>(response, HttpStatus.ACCEPTED);         

我建议改为使用ID,但应该可以从任何Stripe对象()获取JSON对象,然后您可以根据需要序列化/解析该对象。

我只需将
添加到JSON()
即可解决此问题:

payload.put(“付款”,bankaccount.toJson())


这样做的缺点是前端所需的附加
JSON.parse()
使用ID是不够的,因为它是一个显示帐户上当前设置的所有付款方式的付款方式页面,因此会显示一些附加信息,如last4和bankname。有一个参数只是发送那些特定的字段,我将在某个时候发送这些字段,而不是发送完整的对象。尽管如此,我还是能用它工作的请参阅答案。当然,如果您想在UI中显示帐户的某些部分,这是公平的。我仍然认为,与其发送整个对象,不如只提取所需的片段。
Type definition error: [simple type, class com.stripe.net.StripeResponse]; nested exception is
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class 
com.stripe.net.StripeResponse and no properties discovered to create BeanSerializer (to avoid exception,
disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.HashMap["payload"]->
java.util.HashMap["payment"]->com.stripe.model.BankAccount["lastResponse"])]