Handle expiry correctly in json response

Go treats json numbers as `float64` not `int`, so currently expiry information is ignored for json responses since it's treated as an int.
`tok.Expired()` will return false if `IsZero` is true. What I'm really doing here is checking that `IsZero` is false, so you're right in that this is the wrong way to be doing it and it isn't clear what I'm truly asserting. I'll update it.