有啥方法可以使用 gson 反序列化 BigQuery Numeric 数据类型

Posted

技术标签:

【中文标题】有啥方法可以使用 gson 反序列化 BigQuery Numeric 数据类型【英文标题】:Is there any way I can deserialize BigQuery Numeric datatype using gson有什么方法可以使用 gson 反序列化 BigQuery Numeric 数据类型 【发布时间】:2020-05-01 14:22:32 【问题描述】:

在将 BigQuery 对象反序列化为自定义对象时,我遇到了以下问题。所以我使用 BigQuery Storage API 来获取 Bigquery 结果。下面是相同的代码。

BigQueryIO.read(new ReadTable<Payments>(Payments.class)).from("TableName")
                                .withMethod(Method.DIRECT_READ)

正如您在 ReadTable 类中看到的,我正在使用 gson 反序列化对象。

gson.fromJson(jsonElement, class1);

下面是自定义 pojo 类的代码,只有 getter 和 setter,我想要 String 格式的字段数据。

private @Nullable String amount;
public String getAmount() 
return amount;
    
    public void setAmount(String amount) 
        this.amount = amount;
    

有什么办法可以解决这个问题吗?

【问题讨论】:

您找到解决问题的方法了吗? 【参考方案1】:

这看起来可能是一个错误,但我们或许能够解决它。我怀疑 ByteBuffer 可以被解析为 BigDecimal。你可以试试这样的:

new BigDecimal(theByteBuffer.toCharBuffer().array()

或者如果BigInteger 可以工作:

new BigInteger(theByteBuffer.array()

让我知道这是否可行,或者我们是否应该迭代以找出如何做到这一点。

【讨论】:

以上是关于有啥方法可以使用 gson 反序列化 BigQuery Numeric 数据类型的主要内容,如果未能解决你的问题,请参考以下文章

完全理解Gson:Gson反序列化

有啥方法可以防止杰克逊中的字段反序列化?

通过Gson过滤多余的字段

在Gson反序列化期间使用Dagger进行依赖注入

使用 gson 反序列化反序列化对象的内部对象

使用 gson 反序列化时将 TypeToken 转换为 Type 时出错