json - 如何使用从字符串转换为 float64 的类型解码 JSON

我需要解码带有 float 的 JSON 字符串,例如:

{"name":"Galaxy Nexus", "price":"3460.00"}

我使用下面的 Golang 代码:

package main

import (
    "encoding/json"
    "fmt"
)

type Product struct {
    Name  string
    Price float64
}

func main() {
    s := `{"name":"Galaxy Nexus", "price":"3460.00"}`
    var pro Product
    err := json.Unmarshal([]byte(s), &pro)
    if err == nil {
        fmt.Printf("%+v\n", pro)
    } else {
        fmt.Println(err)
        fmt.Printf("%+v\n", pro)
    }
}

当我运行它时,得到结果:

json: cannot unmarshal string into Go value of type float64
{Name:Galaxy Nexus Price:0}

我想知道如何用convert类型解码JSON字符串。

最佳答案

答案要简单得多。只需添加告诉 JSON 解释器它是带有 ,string 的字符串编码 float64(请注意,我只更改了 Price 定义):

package main

import (
    "encoding/json"
    "fmt"
)

type Product struct {
    Name  string
    Price float64 `json:",string"`
}

func main() {
    s := `{"name":"Galaxy Nexus", "price":"3460.00"}`
    var pro Product
    err := json.Unmarshal([]byte(s), &pro)
    if err == nil {
        fmt.Printf("%+v\n", pro)
    } else {
        fmt.Println(err)
        fmt.Printf("%+v\n", pro)
    }
}

https://stackoverflow.com/questions/9452897/

相关文章:

security - JSONP 可以安全使用吗?

c - 使用 C 解析 JSON

android - 获取没有数组名称的 JSONArray?

c# - 使用 .NET 4.0 任务模式使用 HTTPClient .ReadAsAsync 将

json - 记录 JSON 结构的语法

javascript - 字符串化(转换为 JSON)具有循环引用的 JavaScript 对象

jquery - 如何使用 JQuery 发布 JSON 数据?

c# - 忽略 Json.net 中的空字段

java - 用于 Java 的 JWT(JSON Web token )库

javascript - 如何检查 JavaScript 对象是否为 JSON