I have a struct which I convert to JSON in the old fashioned way:
type Output struct {
    Name     string   `json:"name"`
    Command  string   `json:"command"`
    Status   int      `json:"status"`
    Output   string   `json:"output"`
    Ttl      int      `json:"ttl,omitempty"`
    Source   string   `json:"source,omitempty"`
    Handlers []string `json:"handlers,omitempty"`
  }
sensu_values := &Output{
      Name:     name,
      Command:  command,
      Status:   status,
      Output:   output,
      Ttl:      ttl,
      Source:   source,
      Handlers: [handlers],
    }
I want to read an arbitrary JSON file from the filesystem, which can be defined as anything by the user, and then add it to the existing JSON string, taking the duplicates from the original.
How can I do this?
Input JSON :
{
    "environment": "production",
    "runbook": "http://url",
    "message": "there is a problem"
}
It's better to unmarshal the input JSON and combine the two structures before marshaling Output struct.
Sample Code
inputJSON := `{"environment": "production", "runbook":"http://url","message":"there is a problem"}`
out := map[string]interface{}{}
json.Unmarshal([]byte(inputJSON), &out)
out["name"] = sensu_values.Name
out["command"] = sensu_values.Command
out["status"] = sensu_values.Status
outputJSON, _ := json.Marshal(out)
Play Link
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With