反序列化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"])]