package main import ( "encoding/json" "fmt" "io" "io/ioutil" ) type SnapshotRecord struct { Id int `json:"id"` SnapshotSubmission } type SnapshotSubmission struct { Timestamp string `json:"time"` Temp float32 `json:"temp"` Humidity float32 `json:"humidity"` Co2 float32 `json:"co2"` } func createSnapshotSubFromJsonBodyStream(jsonBodyStream io.ReadCloser) (*SnapshotSubmission, error) { var snapshotSub SnapshotSubmission body, err := ioutil.ReadAll(jsonBodyStream) if err != nil { return nil, fmt.Errorf("error reading body stream: %w", err) } err = jsonBodyStream.Close() if err != nil { return nil, fmt.Errorf("couldn't close body stream: %w", err) } err = json.Unmarshal(body, &snapshotSub) if err != nil { return nil, fmt.Errorf("couldn't unmarshal json: %w", err) } return &snapshotSub, nil } func createJsonFromSnapshotRecords(records []*SnapshotRecord) ([]byte, error) { jsonResult, err := json.Marshal(records) if err != nil { return nil, err } return jsonResult, nil }