2013-09-07 8 views
9

W python można produkować JSON z kluczami w posortowanych wykonującJak produkować JSON z posortowanymi kluczami w Go?

import json 
print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4, separators=(',', ': ')) 

nie znalazłem podobną opcję w Go. Jakieś pomysły, w jaki sposób mogę osiągnąć podobne zachowanie?

+0

Czy możesz przesłać rozwiązanie, którego użyłeś? Próbowałem używać 'NewEncoder (...). Encode (structInstance)', ale wyjściowe klucze json nie są posortowane. –

Odpowiedz

29

Pakiet json zawsze zamawia klucze podczas rozstawiania. Konkretnie:

  • Mapy mają swoje klucze klasyfikowane leksykograficznie

  • elemencie klucze są przetaczane w kolejności określonej w struktury

Wdrożenie tu mieszka ATM:

+1

Noice. Zastanawiam się, dlaczego w dokumentacji encoding/json nie wspomniano o tej ważnej właściwości. –

+0

Teraz jest to udokumentowane: https://golang.org/pkg/encoding/json/#Marshal: Wartości map kodują jako obiekty JSON. Typ klucza mapy musi być ciągiem, typem całkowitym lub implementować kodowanie.TekstMarshaler. Klawisze mapy są posortowane i używane jako klucze obiektów JSON, stosując następujące reguły, z zastrzeżeniem opisanego dla wartości łańcuchów UTF-8 wartości ciągów powyżej – programaths

+2

Co z kluczami struct? Czy zamówienie jest udokumentowane? – updogliu

Powiązane problemy