在 Go 语言中,时间包提供了确定和查看时间的功能。 Go 语言的MarshalJSON()函数用于实现json.Marshaler接口。这里的时间是一个带引号的字符串,它采用 RFC 3339 格式,如果可用,则附加亚秒级精度。而且,这个函数是在time包下定义的。在这里,您需要导入“time”包才能使用这些功能。
句法:
func (t Time) MarshalJSON() ([]byte, error)
这里,“t”是指定的时间,并且在此方法中返回“byte”和“error”类型的两个值作为输出。
返回值:它返回一个表示 JSON 编码的字节切片,它也返回一个发生的错误,但如果没有错误则返回“nil”。
示例 1:
// Golang program to illustrate the usage of
// Time.MarshalJSON() function
// Including main package
package main
// Importing fmt and time
import "fmt"
import "time"
// Calling main
func main() {
// Defining t for MarshalJSON method
t := time.Date(2014, 11, 10, 14, 30, 12, 05, time.UTC)
// Calling MarshalJSON() method
encoding, error := t.MarshalJSON()
// Prints JSON's encoding
fmt.Printf("JSON's encoding: %v\n", encoding)
// Prints error
fmt.Printf("Error occurred: %v\n", error)
}
输出:
JSON’s encoding: [34 50 48 49 52 45 49 49 45 49 48 84 49 52 58 51 48 58 49 50 46 48 48 48 48 48 48 48 48 53 90 34]
Error occurred:
示例 2:
// Golang program to illustrate the usage of
// Time.MarshalJSON() function
// Including main package
package main
// Importing fmt and time
import "fmt"
import "time"
// Calling main
func main() {
// Defining t for MarshalJSON method
t := time.Date(2022, 45, 67, 88, 67, 76, 903, time.UTC)
// Calling MarshalJSON() method
encoding, error := t.MarshalJSON()
// Prints JSON's encoding
fmt.Printf("JSON's encoding: %v\n", encoding)
// Prints error
fmt.Printf("Error occurred: %v\n", error)
}
输出:
JSON’s encoding: [34 50 48 50 53 45 49 49 45 48 57 84 49 55 58 48 56 58 49 54 46 48 48 48 48 48 48 57 48 51 90 34]
Error occurred:
这里,上述代码中的“t”值超出了通常的范围,但它们在转换时被归一化。