Je lis un fichier JSON contenant des dates Epix Unix, mais ce sont des chaînes dans le JSON. Dans Go, puis-je convertir une chaîne de caractères sous la forme “1490846400” en une heure de départ.
La réponse fournie par @ Ainar-G n’est pas erronée ou incorrecte, mais il est probable que la meilleure solution consiste à utiliser un désarchiveur JSON personnalisé:
type EpochTime time.Time func (et *EpochTime) UnmarshalJSON(data []byte) error { t := ssortingng.Trim(ssortingng(data), `"`) // Remove quote marks from around the JSON ssortingng sec, err := strconv.ParseInt(t, 10, 64) if err != nil { return err } epochTime := time.Unix(sec,0) *et = epochTime return nil }
Ensuite, dans votre structure, remplacez time.Time
par EpochTime
:
type SomeDocument struct { Timestamp EpochTime `json:"time"` // other fields }
Il n’y a pas une telle fonction dans le paquetage time
, mais il est facile d’écrire:
func ssortingngToTime(s ssortingng) (time.Time, error) { sec, err := strconv.ParseInt(s, 10, 64) if err != nil { return time.Time{}, err } return time.Unix(sec, 0), nil }
Terrain de jeux: https://play.golang.org/p/2h0Vd7plgk .