Lim inn Objective-C til venstre og klikk "Konverter" — vi gjør det om til JSONLim inn Objective-C-kode

Hva verktøyet gjør

Hvis du har en Objective-C-NSDictionary-literal, en NSArray av models, eller en hel class med en haug @property-deklarasjoner, og du bare vil ha JSON-representasjonen — så fikser dette verktøyet det. Ingen grunn til å skrive et engangsprogram som kaller NSJSONSerialization bare for å se outputen.

Outputen matcher det [NSJSONSerialization dataWithJSONObject:options:error:] ville gitt deg på tilsvarende in-memory object graph. NSDictionary blir et JSON-object, NSArray blir et JSON-array, NSString forblir en string, NSNumber blir en number eller boolean avhengig av den underliggende typen (@YES/@NO vs @42), NSNull / [NSNull null] blir null. NSDate kommer ut som ISO-8601-string — konvensjonen de fleste iOS-apper lander på.

Hvis du limer inn en hel class (@interface Order : NSObject ... @end pluss en @implementation eller en [[Order alloc] init]-literal med property-assignments), leser converteren hver @property og bygger JSON-objectet med de nøklene. Nestede classes — en Address-property på Order — utvides som nestede JSON-objects. Flere classes limt inn sammen kommer ut som flere top-level-entries.

Sånn bruker du det

Tre steg. Funker like greit for en enkel dictionary-literal som for en fil full av classes.

1

Lim inn Objective-C (eller prøv eksempelet)

Slipp koden i venstre editor. En NSDictionary-literal, en NSArray, en class med @property, eller en class-instance med assignments — alt funker.

La @-prefiksene, pointer-stjernene og bracket-syntaksen være. Parseren skjønner @{...}, @[...] og @"...".

2

Klikk Konverter

Klikk på den grønne Konverter-knappen. Verktøyet leser hver dictionary, array, property og value, og bygger JSONen i ett pass.

3

Kopier JSONen

Høyre panel gir deg innrykket JSON, klar for en test fixture, en API-mock eller dokumentasjon. Kopier og videre.

Når det faktisk redder dagen

iOS API response-fixtures

Lim inn dictionaryen du ville sendt til <code>dataWithJSONObject:</code> i en unit test og lagre outputen som en .json-fixture. Holder testen deterministisk.

Dokumentere legacy Obj-C-models

En gammel iOS-codebase har Obj-C-classes du må dokumentere i en OpenAPI-spec. Konverter hver model til JSON for å få skjemaformen uten å gjette.

Portering til Swift

Som del av Swiftificationen vil du ha JSON-formen hver Obj-C-class impliserer. Rask måte å generere den referansen før du skriver Codable-structen.

Backend-handoff

Du har en NSDictionary klar til å POSTe. Lim inn for å dobbeltsjekke at JSON-formen matcher API-contractet før requesten går ut.

Vanlige spørsmål

Matcher det NSJSONSerialization-outputen?

Ja — det er målet. NSDictionary/NSArray/NSString/NSNumber/NSNull mappes på standardvis. NSDate stringifiseres som ISO-8601 (NSJSONSerialization selv håndterer ikke NSDate — verktøyet tar den utbredte konvensjonen).

Kan jeg lime inn en class med @property-deklarasjoner?

Ja. Hver @property blir en nøkkel i JSON-objectet, og typen styrer hvordan verdien sendes ut (f.eks. NSString * → string, NSNumber * → number). Hvis eksempelet også inneholder property-assignments, havner de verdiene i JSONen; ellers brukes placeholder-verdier.

Hvordan skilles BOOL og NSNumber?

@YES / @NO og [NSNumber numberWithBool:] gir JSON true/false. Integer- og float-NSNumber-literals (@42, @3.14) gir JSON-numbers — samme regel som NSJSONSerialization bruker når den kan lese det av encoded type.

Hva med nestede classes og arrays av objects?

Nestede NSDictionary og NSArray foldes helt ut. En class som har en annen class som property kommer ut som et nestet JSON-object. En NSArray av model-instances blir et JSON-array av objects, én per instance.

Lagres koden min?

Koden din sendes til backendet for konverteringen og lagres ikke — vi logger ikke payloaden. Ta uansett ut ekte keys eller tokens fra eksempelet før du limer inn.

Håndterer den NSDate, NSURL og andre Foundation-typer?

NSDate blir en ISO-8601-string. NSURL blir dens absoluteString. NSData blir base64. Det er konvensjonene de fleste iOS-team bruker når de serialiserer, dokumentert i Foundation.

Andre verktøy du kan trenge

Objective-C til JSON spiller godt sammen med resten av verktøykassen: