Hi Matt, Thanks, this is exactly what I was wondering about. Modifying the underlying type of bson.ObjectId doesn't seem like being a casual operation, so let's not count on that on the incoming days !
Merry Christmas and happy end of 2016 :D Le vendredi 23 décembre 2016 19:54:15 UTC+1, Matt Harden a écrit : > > Because the underlying type of bson.ObjectID is string, the map marshaller > uses the underlying string (coerced to valid utf-8) as the JSON map key > directly. In the case of ObjectID that's a bad thing because many ObjectIDs > contain bytes that are not valid utf-8 and get replaced with the unicode > replacement rune, causing loss of data. I think it must be this way to > satisfy the Go 1 promise, because originally map keys had to be string or > integer types, and even though later the encoding.TextMarshaller interface > came along, they couldn't change the behavior for string and integer types > including those that implement encoding.TextMarshaller. I suppose the > behavior could be changed if it were controlled by a flag or something. > > I wonder whether the mgo maintainers could be convinced to change the > underlying type of bson.ObjectID to [12]byte instead. This would still work > as a map key and would cause json.Marshaller to use the MarshalText method, > giving you the results you were looking for automatically. > > On Thu, Dec 22, 2016 at 8:20 AM Vincent Jouglard <joug...@gmail.com > <javascript:>> wrote: > >> Hi Jon, >> >> Thanks for the explanation ; i already used strings as indexes to make >> this work; but I was wondering if I was doing something wrong :) >> Still, I wonder if this behavior is wanted and if so, why that ? >> >> Regards, >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.