我正在尝试使用TransactionBuilder在Avalara中创建一个TransactionModel对象。我正在遵循 SDK 中的示例。 示例中的代码,为我的公司修改,抛出一个 gson。Avalara 本身控制的DateTime 对象的 JsonSyntaxException。 我可以更改 DateTime 值,但我无法告诉它如何格式化它。 这对我来说似乎是一个 Avalara 错误,但我希望我错了。
这是我的代码(注意:无论我是否使用 .withDate,都是相同的例外(:
TransactionModel transaction = new TransactionBuilder(client, "COMPANY", DocumentType.SalesOrder, "myCompany.")
.withDate(Calendar.getInstance().getTime())
.withAddress(TransactionAddressType.SingleLocation, null, null, null, null, null, zipCode, "US")
.withLine( new BigDecimal(100.0), new BigDecimal(1), "P0000000")
.Create();
以下是例外情况:
com.google.gson.JsonSyntaxException: 2019-10-01
at com.google.gson.DefaultDateTypeAdapter.deserializeToDate(DefaultDateTypeAdapter.java:107)
at com.google.gson.DefaultDateTypeAdapter.deserialize(DefaultDateTypeAdapter.java:82)
at com.google.gson.DefaultDateTypeAdapter.deserialize(DefaultDateTypeAdapter.java:35)
at com.google.gson.TreeTypeAdapter.read(TreeTypeAdapter.java:58)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
at com.google.gson.Gson.fromJson(Gson.java:803)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at net.avalara.avatax.rest.client.serializer.JsonSerializer.DeserializeObject(JsonSerializer.java:15)
at net.avalara.avatax.rest.client.RestCall.call(RestCall.java:99)
at net.avalara.avatax.rest.client.AvaTaxClient.createTransaction(AvaTaxClient.java:19174)
at net.avalara.avatax.rest.client.TransactionBuilder.Create(TransactionBuilder.java:425
注意:我也在下面的链接中提出了这个问题,但我没有问正确的问题,省略了我实际上根本无法更改任何 JSON 格式的部分: Avalara:json 日期的"日期时间"有效格式是什么?
更新你的pom.xml或等效的下拉更新版本的gson,问题就会消失。 查看 Avalara 论坛: https://community.avalara.com/avalara/topics/error-parsing-date-jre-sdk
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>