MarshalJSON非导出类型(datastore.Key)

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.