2016-04-27 1 views
0

AFNetworking ne veulent pas représenter la valeur BOOL comme true/false dans la requête JSON. @YES essayées, mais NSNumber aucune chance, il convertit à 0 ou 1.après BOOL à JSON en utilisant AFNetworking 3.X ObjectiveC

NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; 
[data setValue:@YES forKey:@"favorite"]; 

NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; 
[params setObject:data forKey:@"data"]; 

puis donner ce dictionnaire à AfNetworking param 3

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 

manager.requestSerializer = serializer; 


[manager POST:@"HTTPS://JSON URL" parameters:params progress:^(NSProgress *uploadProgress) { 
} success:^(NSURLSessionDataTask * task, id responseObject) { 
//SUCCESS 
} failure:^(NSURLSessionDataTask *task, NSError *error) { 
//FAILED REQUEST 
}]; 
+1

La façon de mettre un booléen dans un dictionnaire est d'utiliser un NSNumber comme tu le fais. Je l'ai fait pour chaque fois que j'ai jamais interagi avec JSON. Ça marche. Pourquoi pensez-vous que cela ne fonctionne pas? – Fogmeister

+0

Je suis en train de journaliser "params" avec NSLog et il y a 0 ou 1 –

+1

Oui, c'est ce à quoi ça ressemblera. Pourquoi c'est un problème? Voilà à quoi ça devrait ressembler. – Fogmeister

Répondre

0

Utilisez [NSNumber numberWithBool:YES]

0

Voilà comment j'ai été basculer booléens, puis les envoyer en tant que booléens JSON en utilisant AFNetworking:

self.petActive = ! self.petActive; 
    NSNumber* newFMPstate = self.petActive ? @YES : @NO; 
    NSDictionary *fmpDict = @{ @"petActive": newFMPstate }; 
    /// ... assemble endpoint for put and pass it fmpDict 

@YES et @NO générer respectivement ce JSON

{"petActive":true} 
{"petActive":false} 

(je sais l'opérateur ternaire est redondant, mais il semble ajouter une meilleure lisibilité)