Chciałbym przekonwertować ciąg JSONC# Sortowanie JSON klucze łańcuchowe
"{ \"birthday\": \"1988-03-18\", \"address\": { \"state\": 24, \"city\": 8341, \"country\": 1 } }"
do
"{ \"address\": { \"city\": 8341, \"country\": 1, \"state\": 24 }, \"birthday\": \"1988-03-18\" }"
UWAGA: Nie używam posortowane wersję dla komunikacji (ponieważ klucz robi porządek to naprawdę ważne), potrzebuję posortowaną wersję do wykonania testów lokalnych (przez porównanie napisów JSON).
EDIT: I4V wskazał rozwiązanie, które wykorzystuje Json.Net, wolałbym użyć rozwiązanie, które nie wymaga obejmować dowolną 3rd biblioteki strona (faktycznie używam wbudowanego w System.Json w moim aplikacja)
Zamieściłem sens z roztworem dostarczonych przez I4V + kilka testów here. Dziękuję wam wszystkim.
Hmm ... Kuszące, choć brzmi, bym się zaryzykował, że lepszym rozwiązaniem byłoby nieco głębsza inspekcja JSON, a nie porównanie kawałków. Biorąc pod uwagę, że wyliczanie właściwości w JS nie jest określone przez specyfikację, nie należy polegać na kolejności właściwości obiektu, ponieważ nie ma sensu zamawianie właściwości serializacji json. ECMA-262, sekcja 12.6.4: Mechanika wyliczania właściwości ... jest zależna od implementacji. – spender
@spender Zgadzam się z tobą, że kolejność kluczy JSON jest bez znaczenia, a porównywanie ciągów nie powinno być używane do porównywania dużych/złożonych obiektów JSON. Ale sorter ciągów JSON może być przydatny w bardzo specyficznych sytuacjach (takich jak moje). –