go - 为什么json值是空的

标签 go

你能看出为什么不保存 json 值吗:

更新:如果您想解释为什么这被降级为“题外话”?

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
)

type UsedInContext struct {
    UsedIn      string `json:"usedin"`
    ContextName string `json:"contextname"`
}

type ContextData struct {
    usedInContext []UsedInContext `json:"usedincontext"`
}

func saveData() {

    var jsonBlob = []byte(`{
        "usedincontext": 
        [
            {"usedin":"local", "contextname":"desktop"}
        ]
    }`)

    usedInContext := UsedInContext{}
    err := json.Unmarshal(jsonBlob, &usedInContext)
    if err != nil {
    }

    usedInContextJson, _ := json.Marshal(usedInContext)
    err = ioutil.WriteFile("data.json", usedInContextJson, 0644)
    fmt.Printf("%+v", usedInContext)
}

我得到以下信息:

{"usedin":"","contextname":""}

最佳答案

您将文档解码为 UsedInContext 类型,同时它与 ContextData 的架构相匹配:

type ContextData struct {
    UsedInContext []UsedInContext `json:"usedincontext"` // exported
}

var data ContextData
json.Unmarshal(jsonBlob, &data)
fmt.Printf("%+v", data)

关于go - 为什么json值是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52116513/

相关文章:

elasticsearch - 有没有办法通过 Elasticsearch 查询故意返回空值?

go - 在 golang makefile 中使用 GOPATH 还是先初始化 go mod?

go - 你能让这个 'incorrectly synchronized' 测试失败吗?

rest - 理解 Go 中 Kubernetes API 框架的逻辑

html - 与用户输入完整共享当前html响应(原样)

在 Go 中按需导入包?

javascript - GO: javascript 和 html MIME 错误

arrays - 在GO中解析json对象数组

dictionary - 如何正确初始化一片 map

go - 我可以假设 unix 时间戳将随着 go 增加吗?