您能看到为什么不保存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)

10-06 13:15