Wklej Objective-C po lewej i kliknij "Konwertuj" — zrobimy z tego JSONWklej kod Objective-C

Co robi to narzędzie

Jeśli masz literał NSDictionary w Objective-C, NSArray pełne modeli, albo całą klasę z kupą deklaracji @property, i chcesz po prostu zobaczyć reprezentację JSON — to narzędzie to załatwi. Nie musisz pisać jednorazowego programu, który wywołuje NSJSONSerialization tylko po to, by zobaczyć wynik.

Wynik pokrywa się z tym, co [NSJSONSerialization dataWithJSONObject:options:error:] dałby ci na równoważnym grafie obiektów w pamięci. NSDictionary staje się obiektem JSON, NSArray tablicą JSON, NSString pozostaje stringiem, NSNumber zamienia się w number lub boolean w zależności od faktycznego typu (@YES/@NO vs @42), NSNull / [NSNull null] staje się null. NSDate wychodzi jako string ISO-8601 — konwencja, na której ostatecznie ląduje większość apek iOS.

Jeśli wkleisz całą klasę (@interface Order : NSObject ... @end plus @implementation albo literał [[Order alloc] init] z przypisaniami do properties), konwerter czyta każde @property i buduje obiekt JSON z tymi kluczami. Zagnieżdżone klasy — property Address w Order — są rozwijane jako zagnieżdżone obiekty JSON. Kilka klas wklejonych razem wychodzi jako kilka wpisów na najwyższym poziomie.

Jak tego używać

Trzy kroki. Działa tak samo dla jednego literała dictionary, jak i dla pliku wypchanego klasami.

1

Wklej swoje Objective-C (albo spróbuj przykładu)

Wrzuć kod do lewego edytora. Literał NSDictionary, NSArray, klasa z @property albo instancja klasy z przypisaniami — wszystko wchodzi.

Zostaw prefiksy @, gwiazdki wskaźników i klamry w spokoju. Parser ogarnia @{...}, @[...] i @"...".

2

Kliknij Konwertuj

Kliknij zielony przycisk Konwertuj. Narzędzie czyta każdy dictionary, array, property i wartość, i buduje JSON w jednym przelocie.

3

Skopiuj JSON

Prawy panel daje ci wcięty JSON, gotowy do test fixture, API mock albo dokumentacji. Skopiuj i lecisz dalej.

Kiedy to naprawdę ratuje dupę

Fixture odpowiedzi API w iOS

Wklej dictionary, który przekazałbyś do <code>dataWithJSONObject:</code> w teście jednostkowym, i zapisz wynik jako fixture .json. Test zostaje deterministyczny.

Dokumentowanie legacy modeli Obj-C

Stara iOS-owa codebase ma klasy Obj-C, które musisz udokumentować w specu OpenAPI. Konwertuj każdy model na JSON, żeby mieć kształt schemy bez zgadywania.

Port do Swifta

W ramach Swiftification chcesz kształt JSON implikowany przez każdą klasę Obj-C. Szybki sposób na wygenerowanie tej referencji zanim napiszesz strukturę Codable.

Przekazka do backendu

Masz NSDictionary gotowy do POSTa. Wklej, żeby sprawdzić, czy kształt JSON pasuje do kontraktu API, zanim request wyleci.

Częste pytania

Czy zgadza się z wyjściem NSJSONSerialization?

Tak — to właśnie cel. NSDictionary/NSArray/NSString/NSNumber/NSNull mapują się w standardowy sposób. NSDate idzie jako ISO-8601 (samo NSJSONSerialization nie obsługuje NSDate — narzędzie bierze najpopularniejszą konwencję).

Mogę wkleić klasę z deklaracjami @property?

Tak. Każde @property staje się kluczem obiektu JSON, a typ decyduje, jak wartość wyjdzie (np. NSString * → string, NSNumber * → number). Jeśli przykład zawiera też przypisania do properties, te wartości lądują w JSONie; jeśli nie — wrzucane są placeholdery.

Jak rozróżnia się BOOL i NSNumber?

@YES / @NO i [NSNumber numberWithBool:] dają w JSON true/false. Literały NSNumber całkowite i zmiennoprzecinkowe (@42, @3.14) dają numbery JSON — ta sama reguła, którą stosuje NSJSONSerialization, kiedy jest w stanie odróżnić to po zakodowanym typie.

A zagnieżdżone klasy i tablice obiektów?

Zagnieżdżone NSDictionary i NSArray rozwijają się w całości. Klasa, która ma inną klasę jako property, wychodzi jako zagnieżdżony obiekt JSON. NSArray instancji modeli staje się tablicą JSON obiektów, po jednym na instancję.

Czy mój kod jest zapisywany?

Twój kod idzie do backendu do konwersji i nie jest persystowany — nie logujemy payloadu. I tak zaczernij realne klucze albo tokeny w przykładzie, zanim wkleisz.

Ogarnia NSDate, NSURL i inne typy Foundation?

NSDate staje się stringiem ISO-8601. NSURL swoim absoluteString. NSData base64. Takie konwencje stosuje większość teamów iOS przy serializacji, udokumentowane w Foundation.

Inne narzędzia, które mogą się przydać

Objective-C do JSON dobrze gra z resztą skrzynki narzędziowej: