如何使用Go将这个JSON数组解组到结构切片中?

I have a JSON file like this:

[
  {   

    "namespace": "pulsarNamespace1",
    "name": "pulsarFunction1",
    "tenant": "pulsarTenant1"
  },

  {   

    "namespace": "pulsarNamespace2",
    "name": "pulsarFunction2",
    "tenant": "pulsarTenant1"
  }
]

I am attempting to deserialize/unmarshal this JSON array into a slice of structs, but I'm getting structs with empty (default) values.

When I run my code, it correctly reads my file into a string, but it's not deserializing the data correctly and just writes empty structs to the console, like this:

[]main.Config{main.Config{namespace:"", tenant:"", name:""}, main.Config{namespace:"", tenant:"", name:""}}

Namespace: Name: %!d(string=)

Namespace: Name: %!d(string=)

Here's my code in Go:

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "io/ioutil"
    "net/http"
    "os"
) 
// Ignore the unused imports.

type Config struct {
    namespace string `json:"namespace,omitempty"`
    tenant    string `json:"tenant,omitempty"`
    name      string `json:"name,omitempty"`
}

func getConfigs() string {
    b, err := ioutil.ReadFile("fastDeploy_example.json") // just pass the file name
    if err != nil {
        fmt.Print(err)
    }
    str := string(b) // convert content to a 'string'
    fmt.Println(str) // print the content as a 'string'
    return str
}

func deserializeJson(configJson string) []Config {
    jsonAsBytes := []byte(configJson)
    configs := make([]Config, 0)
    err := json.Unmarshal(jsonAsBytes, &configs)
    fmt.Printf("%#v
", configs)
    if err != nil {
        panic(err)
    }
    return configs
}

func main() {
    // Unmarshal each fastDeploy config component into a slice of structs.
    jsonConfigList := getConfigs()
    unmarshelledConfigs := deserializeJson(jsonConfigList)

    for _, configObj := range unmarshelledConfigs {
        fmt.Printf("Namespace: %s Name: %d
", configObj.namespace, configObj.name)
    }
}

Moreover, if I understand the purpose of using omitempty, then it shouldn't even be writing the empty fields. However, it appears that it's writing them anyway.

How do I correctly deserialize/unmarshal my JSON array into my slice of structs in Golang?

Export the field names of your struct: Namespace, Tenant, Name, etc., so the unmarshaler can set them via reflection.

Re: omitempty, that's a tag for the json marshaler. If you marshal your struct to json with empty strings, then those fields will be omitted. If you printf the struct, they will be printed.