Cole Objective-C à esquerda e clique em "Converter" — transformamos em JSONCole o código Objective-C

O que esta ferramenta faz

Se você tem um literal NSDictionary de Objective-C, um NSArray de modelos, ou uma classe inteira com um monte de @property, e só quer ver o JSON — essa ferramenta faz isso. Sem escrever um programinha descartável só para chamar NSJSONSerialization e ver o resultado.

A saída coincide com o que [NSJSONSerialization dataWithJSONObject:options:error:] te daria no grafo equivalente em memória. NSDictionary vira objeto JSON, NSArray vira array JSON, NSString continua string, NSNumber vira número ou booleano dependendo do tipo por baixo (@YES/@NO vs @42), NSNull / [NSNull null] vira null. NSDate sai como string ISO-8601 — a convenção em que a maioria dos apps iOS acaba parando.

Se você colar uma classe inteira (@interface Order : NSObject ... @end mais um @implementation ou um literal [[Order alloc] init] com atribuições de propriedades), o conversor lê cada @property e monta o objeto JSON com essas chaves. Classes aninhadas — uma propriedade Address dentro de Order — são expandidas como objetos JSON aninhados. Várias classes coladas juntas saem como várias entradas de nível superior.

Como usar

Três passos. Funciona do mesmo jeito para um literal de dicionário ou para um arquivo cheio de classes.

1

Cole seu Objective-C (ou tente o exemplo)

Jogue o código no editor da esquerda. Um literal NSDictionary, um NSArray, uma classe com @property ou uma instância de classe com atribuições — tudo funciona.

Pode deixar os prefixos @, os asteriscos de ponteiro e os colchetes como estão. O parser entende @{...}, @[...] e @"...".

2

Clica em Converter

Clique no botão verde Converter. A ferramenta lê cada dicionário, array, property e valor, e monta o JSON em uma passada.

3

Copia o JSON

O painel da direita te entrega o JSON indentado, pronto para um fixture de teste, um mock de API ou documentação. Copia e segue.

Quando realmente salva o dia

Fixtures de resposta de API no iOS

Cole o dicionário que você passaria para <code>dataWithJSONObject:</code> em um teste unitário e salve a saída como fixture .json. Mantém o teste determinístico.

Documentar modelos Obj-C legados

Uma base iOS antiga tem classes Obj-C que você precisa documentar em uma spec OpenAPI. Converta cada modelo para JSON e tire a forma do schema sem adivinhação.

Portando para Swift

Na jornada de Swiftification, você quer a forma JSON implícita em cada classe Obj-C. É um jeito rápido de gerar essa referência antes de escrever o struct Codable.

Handoff com backend

Você tem um NSDictionary prontinho para fazer POST. Cole para conferir que a forma do JSON bate com o contrato da API antes da request sair.

Perguntas frequentes

Bate com a saída do NSJSONSerialization?

Bate — é esse o objetivo. NSDictionary/NSArray/NSString/NSNumber/NSNull mapeiam do jeito padrão. NSDate é stringificado como ISO-8601 (o NSJSONSerialization em si não lida com NSDate — a ferramenta adota a convenção mais comum).

Posso colar uma classe com declarações @property?

Pode. Cada @property vira uma chave do objeto JSON, e o tipo dita como o valor é emitido (ex: NSString * → string, NSNumber * → número). Se o exemplo trouxer também atribuições de propriedades, esses valores preenchem o JSON; senão, entram valores placeholder.

Como BOOL e NSNumber são distinguidos?

@YES / @NO e [NSNumber numberWithBool:] emitem true/false no JSON. Literais NSNumber inteiros e de ponto flutuante (@42, @3.14) emitem números JSON — a mesma regra que o NSJSONSerialization aplica quando consegue distinguir pelo tipo codificado.

E classes aninhadas e arrays de objetos?

NSDictionary e NSArray aninhados são totalmente expandidos. Uma classe que tem outra classe como propriedade sai como objeto JSON aninhado. Um NSArray de instâncias de modelo vira um array JSON de objetos, um por instância.

Meu código fica salvo?

Seu código é enviado ao backend para a conversão e não é persistido — não logamos o payload. Mesmo assim, esconda chaves ou tokens reais no exemplo antes de colar.

Ele lida com NSDate, NSURL e outros tipos de Foundation?

NSDate vira uma string ISO-8601. NSURL vira sua absoluteString. NSData vira base64. São as convenções que a maioria dos times iOS usa ao serializar, documentadas em Foundation.

Outras ferramentas que podem ajudar

Objective-C para JSON combina bem com o resto da caixa de ferramentas: