Files
greenlight/internal/data/runtime.go
2025-10-21 16:26:06 +02:00

34 lines
929 B
Go

package data
import (
"fmt"
"strconv"
)
// Runtime
/*
Declare a custom Runtime type, which has the underlying type int32
(the same as our Movie struct field)
*/
type Runtime int32
// MarshalJSON
/*
Implement a MarshalJSON() method on the Runtime type so that it satisfies
the json.Marshaler interface. This should return the JSON-encoded value
for the movie runtime (in our case, it will return string in the format
"<runtime> mins").
*/
func (r Runtime) MarshalJSON() ([]byte, error) {
// Generate a string containing the movie runtime in the required format.
jsonValue := fmt.Sprintf("%d mins", r)
// Use the strconv.Quote() function on the string to wrap it in double
// quotes. It needs to be surrounded by double quotes in order to be
// a valid *JSON string*.
quotedJSONValue := strconv.Quote(jsonValue)
// Convert the quoted string value to a byte slice and return it.
return []byte(quotedJSONValue), nil
}