【问题标题】:Unmarshal JSON into Golang type Big.Float将 JSON 解组为 Golang 类型 Big.Float
【发布时间】:2016-08-26 01:22:35
【问题描述】:

我有一条 json 消息需要解组为一个结构,该结构具有来自 math 包的一些 big.Float 字段。 json 字段是数字类型。它给了我err = json: cannot unmarshal string into Go value of type *big.Float

我想知道为什么它会抱怨“无法解组字符串”,因为我的 json 字段是数字类型。我需要做什么才能将归档到 *big.Float 字段的 json 解组。

例子:

type Msg struct {  
      Usage0   *big.Float 
      Usage1   *big.Float 
      Usage2   *big.Float       
}

// jsonMsg = {'Usage0': 31241.4543, "Usage1": 54354325423.65, ...}

err := json.Unmarshal(jsonMsg, &msg)

【问题讨论】:

    标签: json go


    【解决方案1】:

    在我看来(基于文档)它期望 big.Float 的 json 作为字符串传入。这部剧证明了这一点:

    https://play.golang.org/p/7XKn2hhXRD

    如果您无法控制 json,那么您可以实现自己的 unmarshaller 作为替代方案。

    【讨论】:

    • 所以消息是从消息队列(Kestrel)中检索出来的。我们只需要保持足够精确的数字,所以我们使用了 big.Float。为了保持消息队列的精度,我们在另一个上游程序中写入队列时应该使用json的字符串还是数字类型?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2022-01-27
    • 2020-12-27
    • 2019-06-07
    • 1970-01-01
    相关资源
    最近更新 更多