I'm using Google Datastore. I have a query that returns a slice of entities. Each entity includes a datastore key. I need to marshal this slice of entities to JSON, so I used encoding/json.MarshalJSON
.
The problem is *datastore.Key
has a custom MarshalJSON
method which base64 encodes the key value, which I don't want. I need the vanilla string value which you can get by calling *datastore.Key.String()
but I don't want to have to call this String()
method each time I deal with a datastore key because I have quite a lot of different struct types which all include a datastore key, and I don't want to have to write custom code for each one of them.
Ideally, I would be able to call json.MarshalJSON(<AnyType>)
and it would return the JSON representation of that type with the datastore key in string non-base64-encoded format.
Note: We can assume that the key string values are ASCII-compatible.