2013-10-10 2 views
0

Je veux formater une chaîne de JSON ci-dessous en utilisant le format NSJSONSerialization:Comment construire une chaîne JSON de format particulier?

{ 
"data":{"userName":"rrullo","password":"rrullo!"}, 
"meta":{"appId":"S3B9CU4R2B9JTXV9254Y","appVersion":"2.1.0","serverVersion":"1.1.0","platform":"iOS","deviceToken":"1234","tm_session_id":"BB00000"} 
} 

Mais je n'ai pas la moindre idée comment atteindre ce format si. Quelqu'un peut-il m'aider s'il vous plaît ......

+0

1) En savoir la syntaxe JSON sur json.org. 2) Créez le dictionnaire externe pour représenter "l'objet" JSON le plus externe. 3) Créez les deux dictionnaires internes et insérez-les dans le dictionnaire externe. 4) Sérialiser avec NSJSONSerialization. –

Répondre

2

Remplissez d'abord deux NSDictionaries avec vos informations 'meta' et 'data'. Ensuite, ajoutez les dans une principale NSDictionary puis sérialiser en utilisant NSJsonSerialization

NSDictionary * metaDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"appId", @"S3B9CU4R2B9JTXV9254Y", @"appVersion", @"2.1.0", @"serverVersion", @"1.1.0", @"platform", @"iOS",..., nil]; 

NSDictionary * dataDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"userName", @"rrullo", @"password", @"rrullo!", nil]; 

NSDictionary * mainDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
@"data", dataDict, @"meta", metaDict, nil]; 

Maintenant, vous pouvez utiliser NSJsonSerialization pour convertir cette mainDict à un NSString

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:mainDict 
                options:NSJSONWritingPrettyPrinted 
                error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

Hope this helps

+0

Merci beaucoup ... Cela aide beaucoup ... –

+0

@RashmiRanjanmallick S'il vous plaît marquer cela comme la bonne réponse si cela a fonctionné pour vous. – onetwopunch

2
NSDictionary dictData = @{ @"UserName":@"rrullo", @"password":@"rrullo!"}; 
NSDictionary dictMeta = @{ @"appId":@"S3B9CU4R2B9JTXV9254Y", etc}; 
NSDictionary dictJSON = @{ @"data":dictData, @"meta":dictMeta }; 

NSError *error = nil; 
NSData *dataJSON = [NSJSONSerialization dataWithJSONObject:dictJSON 
                options:NSJSONWritingPrettyPrinted 
                error:&error]; 
if (!error) { 
    NSString *jsonString = [[NSString alloc] initWithData:dataJSON encoding:NSUTF8StringEncoding]; 
} else { 
    NSLog(@"Error: %@", error); 
} 
+0

@RashmiRanjanmallick - Ne le remercie pas si vous ne comprenez pas ce que fait le code. Quand les gens essaient de faire des trucs JSON avec des copies/éditions d'autres sources, ils sont presque toujours découragés. –

Questions connexes