}
written++
keys := vv.MapKeys()
- sort.Sort(keksort.ByLenFirstRV(keys))
- var n64 int64
- for _, k := range keys {
- if k.Kind() != reflect.String || k.String() == "" {
+ if len(keys) > 0 {
+ sort.Sort(keksort.ByLenFirstRV(keys))
+ if keys[0].String() == "" {
err = ErrMapBadKey
return
}
- n64, err = StrEncode(w, k.String())
- written += n64
- if err != nil {
- return
- }
- n64, err = Encode(w, vv.MapIndex(k).Interface(), opts)
- written += n64
- if err != nil {
- return
+ var n64 int64
+ for _, k := range keys {
+ if k.Kind() != reflect.String {
+ err = ErrMapBadKey
+ return
+ }
+ n64, err = StrEncode(w, k.String())
+ written += n64
+ if err != nil {
+ return
+ }
+ n64, err = Encode(w, vv.MapIndex(k).Interface(), opts)
+ written += n64
+ if err != nil {
+ return
+ }
}
}
_, err = ByteEncode(w, byte(AtomEOC))