【问题标题】:how to store bigdecimal in firestore in Android如何在Android的firestore中存储bigdecimal
【发布时间】:2018-07-17 04:51:04
【问题描述】:

我正在尝试使用 Android Studio 将对象插入 Firestore,它给出了一条错误消息:

java.lang.IllegalArgumentException: Invalid data. Unsupported type: java.math.BigDecimal

如何将 BigDecimal 插入 Firestore?

【问题讨论】:

    标签: java android google-cloud-firestore bigdecimal


    【解决方案1】:

    检查 Firestore 的 supported types。如果您需要其他任何内容,请转换为支持的类型,然后在阅读时转换回来。通常,您会将String 用于BigDecimal。如果您需要比较,请将零填充到您的理论最大值,或以 Double 的形式存储在另一个字段中。

    【讨论】:

      【解决方案2】:

      你可以做这样的事情(在 Kotlin 中):

      class Model() {
      
          @get:PropertyName("value") 
          @set:PropertyName("value")
          var firestoreValue: String = "0"
      
          var value: BigDecimal
              @Exclude get() = firestoreValue.toBigDecimal()
              @Exclude set(value) { firestoreValue = value.toPlainString() }
      }
      

      目前还没有找到更好的解决方案。如果可以为不受支持的类型实现转换器(例如 Gson 的 TypeAdapters),那就太好了。

      【讨论】:

        猜你喜欢
        • 2017-08-15
        • 1970-01-01
        • 2021-07-18
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 2018-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多