通过应用程序在线连接到 QuickBooks 时遇到问题

问题描述 投票:0回答:1

我们在 QuickBooks 的在线连接方面遇到一些问题。最近,我们将代码库从 Java11 迁移到 Java21,从 Spring Boot 2.4.3 迁移到 Spring Boot 3.3.3,以及从 QuickBooks 6.0.7 迁移到 QuickBooks 6.4.1。通过我们的应用程序连接到 QuickBooks 时,由于某些问题,它不会重定向回我们的应用程序。早期版本工作正常,但迁移后,我们遇到错误。

这是我收到错误的代码片段

public String getCompanyName(String accessToken, String realmId) throws Exception {
        DataService dataService = serviceFactory.getDataService(accessToken, realmId);
        String query = "select * from companyinfo";
        **QueryResult executeQuery = dataService.executeQuery(query);** // this line we are getting error
        String comapnyDisplayName = "QB Company";
        List<CompanyInfo> entities = null;
        if (executeQuery != null) {
            entities = (List<CompanyInfo>) executeQuery.getEntities();
            if (entities != null && !entities.isEmpty()) {
                comapnyDisplayName = entities.get(0).getCompanyName();
            }
        }
        return comapnyDisplayName;
    }

在最后一行中我遇到了一些错误。

日志:

Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `com.intuit.ipp.data.MonthEnum` from String "January": not one of the values accepted for Enum class: [OCTOBER, SEPTEMBER, JUNE, MARCH, MAY, APRIL, JULY, JANUARY, FEBRUARY, DECEMBER, AUGUST, NOVEMBER]
 at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.intuit.ipp.data.CompanyInfo["FiscalYearStartMonth"])
    at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)
    at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1958)
    at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1245)
    at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:447)
    at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:304)
    at com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:273)
    at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:310)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
    at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4881)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3035)
    at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:3499)
    at com.intuit.ipp.serialization.QueryResponseDeserializer.deserialize(QueryResponseDeserializer.java:134)
    at com.intuit.ipp.serialization.QueryResponseDeserializer.deserialize(QueryResponseDeserializer.java:48)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
    at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4881)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3035)
    at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:3499)
    at com.intuit.ipp.serialization.IntuitResponseDeserializer.getQueryResponse(IntuitResponseDeserializer.java:327)
    at com.intuit.ipp.serialization.IntuitResponseDeserializer.deserialize(IntuitResponseDeserializer.java:198)
    at com.intuit.ipp.serialization.IntuitResponseDeserializer.deserialize(IntuitResponseDeserializer.java:54)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4905)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3848)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3816)
    at com.intuit.ipp.serialization.JSONSerializer.deserialize(JSONSerializer.java:302)
    ... 95 more

有谁知道为什么会出现这个错误?与 Java、Spring Boot 或 QuickBooks Online 相关吗?

spring-boot quickbooks-online java-21
1个回答
0
投票

错误是您的 MonthEnum 采用 PascalCase 格式,但库希望它采用全部大写字母。

Cannot deserialize value of type `com.intuit.ipp.data.MonthEnum` from String "January": not one of the values accepted for Enum class: [OCTOBER, SEPTEMBER, JUNE, MARCH, MAY, APRIL, JULY, JANUARY, FEBRUARY, DECEMBER, AUGUST, NOVEMBER]

一月 -> 一月

© www.soinside.com 2019 - 2024. All rights reserved.