json - 无法从JSON解码int字段

标签 json go decode

我的目标是读取JSON文件。尽管以下程序可以正常读取文件,但是id字段值不正确。对于所有读取的对象,id字段值为0

JSON文件内容示例:

{
  "users" : [
    {
      "id" : "1",
      "name" : "Matt Hayden"
    },
    {
      "id" : "2",
      "name" : "David Warner"
    },
  ]
 }

Golang中的JSON文件阅读器程序
 type Schema struct {
    Id int `json:"id"`
    Name string `json:"name"`

 }

 func reader() {
    fileName := "./input.json"

    jsonFile, fileErr := os.Open(fileName)
    if fileErr != nil {
        _ = errors.Errorf("failed to open file %s : %v", fileName, fileErr)
    }
    defer jsonFile.Close()

    bytesRead, readErr := ioutil.ReadAll(jsonFile)
    if readErr != nil {
        _ = errors.Errorf("failed to read json file %s : %v", fileName, readErr)
    }

    var sch Schema
    unMarshalErr := json.Unmarshal(bytesRead, &sch)
    if unMarshalErr != nil {
        _ = errors.Errorf("failed to unmarshal JSON bytes : %v", unMarshalErr)
    }

    fmt.Printf("%+v", sch)
 }

实际输出:
 {Users:[{Id:0 Name:Matt Hayden} {Id:0 Name:David Warner}]}

预期产量:
 {Users:[{Id:1 Name:Matt Hayden} {Id:2 Name:David Warner}]}

最佳答案

您可以在JSON结构标签中添加其他类型。看一下编码(marshal)的文档here

示例:https://play.golang.org/p/VqZu9SrnpW4

package main

import (
    "encoding/json"
    "fmt"
    "reflect"
)

type Response struct {
    Users []User `json:"users"`
}

type User struct {
    ID   int    `json:"id,string"`
    Name string `json:"name"`
}

func main() {
    r := &Response{}

    err := json.Unmarshal([]byte(`{
  "users" : [
    {
      "id" : "1",
      "name" : "Matt Hayden"
    },
    {
      "id" : "2",
      "name" : "David Warner"
    }
  ]
 }`), &r)
    if err != nil {
        panic(err)
    }

    fmt.Printf("%#v \n", r)
    fmt.Printf("Type of ID is %s \n", reflect.TypeOf(r.Users[0].ID)) // int
}

关于json - 无法从JSON解码int字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59709188/

相关文章:

php - jQuery AJAX 调用两次

json - Golang 中的多模式 JSON 验证

c - 在 C90 中实现无溢出系统堆栈

go - 接受任何 slice 的 Express 函数

image - 无法在 GOLANG 中解码不同的图像格式(分配计数不匹配)

PHP 接收 JSON 但无法解码

PHP:处理 'JSONP' 输出与 'JSON' 及其解析?

java - Ninja 框架端点在尝试将 JSON 映射到自定义对象时抛出 500 错误

php - 如何将多个表行从 JSON 对象获取到应用程序

go - Golang如何在静态服务中删除最后一个斜杠