Je ne suis pas sûr si ce que je vais demander est en fait une NSDictionary
avec plusieurs clés, mais d'accord.
Ce que je veux faire, c'est créer une NSDictionary
avec des clés et des valeurs pour mes données, puis la convertir au format JSON
. Le format JSON
ressemblerait exactement à ceci:
{
"eventData": {
"eventDate": "Jun 13, 2012 12:00:00 AM",
"eventLocation": {
"latitude": 43.93838383,
"longitude": -3.46
},
"text": "hjhj",
"imageData": "raw data",
"imageFormat": "JPEG",
"expirationTime": 1339538400000
},
"type": "ELDIARIOMONTANES",
"title": "accIDENTE"
}
J'ai seulement utilisé NSDictionaries
comme ceci:
NSArray *keys = [NSArray arrayWithObjects:@"eventDate", @"eventLocation", @"latitude" nil];
NSArray *objects = [NSArray arrayWithObjects:@"object1", @"object2", @"object3", nil];
dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
Mais le format ci-dessus ne concerne pas uniquement la valeur clé. Ma question est donc la suivante: comment la NSDictionary
serait-elle adaptée au format JSON
?? Merci d'avoir lu mon post, et désolé si aucune confusion.
Vous savez que vous pouvez avoir une NSDictionary
dans un autre NSDictonary
non?
NSDictionary *eventLocation = [NSDictionary dictionaryWithObjectsAndKeys:@"43.93838383",@"latitude",@"-3.46",@"latitude", nil];
NSMutableDictionary *eventData = [NSDictionary dictionaryWithObjectsAndKeys:eventLocation,@"eventLocation", nil];
[eventData setObject:@"Jun 13, 2012 12:00:00 AM" forKey:@"eventDate"];
[eventData setObject:@"hjhj" forKey:@"text"];
.
.
.
NSMutableDictionary *finalDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:eventData,@"eventData", nil];
[finalDictionary setObject:@"ELDIARIOMONTANES" forKey:@"type"];
[finalDictionary setObject:@"accIDENTE" forKey:@"title"];
Maintenant, avec les littéraux Objective-C, il existe un moyen beaucoup plus efficace, plus simple et plus propre d’y parvenir. Voici votre dictionnaire exact avec cette nouvelle syntaxe:
NSDictionary *dictionary = @{
@"eventData": @{
@"eventDate": @"Jun 13, 2012 12:00:00 AM",
@"eventLocation": @{
@"latitude": @43.93838383,
@"longitude": @-3.46
},
@"text": @"hjhj",
@"imageData": @"raw data",
@"imageFormat": @"JPEG",
@"expirationTime": @1339538400000
},
@"type": @"ELDIARIOMONTANES",
@"title": @"accIDENTE"
};
// Prints: "43.93838383"
NSLog(@"%@", dictionary[@"eventData"][@"eventLocation"][@"latitude"]);
Comment créer NSArray et avec Access pour objet en utilisant NSDictionary?
... Créer NSArray
NSArray *studentkeys = [NSArray arrayWithObjects:@"studentName", @"studentBirthDate", @"studentCity", @"studentMobile" nil];
NSArray *objects = [NSArray arrayWithObjects:@"Pravin", @"27/08/1990", @"Bhavnagar",@"7878007531", nil];
... pour accéder à l'objet NSArray à l'aide de NSDictionary
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
Voici la structure:
Votre objet racine est NSMutableDictionary
eventData
- clé de l'objet NSMutableDictionary
avec clés et objets:
-> clé eventDate
objet NSString
-> key eventLocation
object NSMutableDictionary
avec clés et objets:
----> clé latitude
objet NSNumber
----> clé longitude
objet NSNumber
-> clé text
objet NSString
-> clé imageData
objet NSString
converti plus tard en NSData
-> clé imageFormat
objet NSString
-> clé expirationTime
objet NSNumber
type
clé de l'objet NSString
title
clé de l'objet NSString
si vous voulez plusieurs catégories, vous pouvez suivre ce format
NSDictionary *jsonObject = @{
@"data1":@[
@{
@"title":@"A"
@"subData" : @[
@{
@"title":@"aa"
}]
}
]
};