J'ai un dictionnaire que j'ai besoin de générer une chaîne JSON en utilisant les valeurs dans le dictionnaire. Est-il possible de le convertir? Pouvez-vous les gars s'il vous plaît aider sur ce point?
Merci d'avance,
J'ai un dictionnaire que j'ai besoin de générer une chaîne JSON en utilisant les valeurs dans le dictionnaire. Est-il possible de le convertir? Pouvez-vous les gars s'il vous plaît aider sur ce point?
Merci d'avance,
Apple a ajouté un JSON et l'analyseur de sérialiseur dans la version 5.0 d'iOS et de Mac OS X 10.7. Voir NSJSONSerialization.
Pour générer une chaîne JSON à partir d'un NSDictionary ou NSArray, vous n'avez pas besoin d'importer un tiers cadre plus.
Voici comment le faire:
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryOrArrayToOutput
options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
error:&error];
if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
Voici les catégories pour NSArray et NSDictionary pour faire de ce super-facile. J'ai ajouté une option pour pretty-print (retours à la ligne et les tabulations pour le rendre plus facile à lire).
@interface NSDictionary (BVJSONString)
-(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint;
@end
.
@implementation NSDictionary (BVJSONString)
-(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint {
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0)
error:&error];
if (! jsonData) {
NSLog(@"bv_jsonStringWithPrettyPrint: error: %@", error.localizedDescription);
return @"{}";
} else {
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
}
@end
.
@interface NSArray (BVJSONString)
- (NSString *)bv_jsonStringWithPrettyPrint:(BOOL)prettyPrint;
@end
.
@implementation NSArray (BVJSONString)
-(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint {
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self
options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0)
error:&error];
if (! jsonData) {
NSLog(@"bv_jsonStringWithPrettyPrint: error: %@", error.localizedDescription);
return @"[]";
} else {
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
}
@end
NOTE: Cette réponse a été donnée avant iOS 5 a été libéré.
Obtenir le json-cadre et de le faire:
#import "SBJsonWriter.h"
...
SBJsonWriter *jsonWriter = [[SBJsonWriter alloc] init];
NSString *jsonString = [jsonWriter stringWithObject:myDictionary];
[jsonWriter release];
myDictionary
sera votre dictionnaire.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.