2013-07-11 3 views
1

Ma réponse JSON a une valeur de quantité comme « 20.0000 »comment analyser une valeur décimale de la réponse JSON

Am analyse syntaxique comme

id jsonObject1 = [NSJSONSerialization JSONObjectWithData:responseData7 options:NSJSONReadingAllowFragments error:nil]; 
AmountArray = [jsonObject1 valueForKey:@"Amt"]; 

Ma question est, quand j'imprimer (vérifier) ​​jsonObject1 , la valeur du montant est juste '20' et non '20 .0000'. mais la valeur réelle du webservice est '20 .0000'. comment l'analyser correctement?

+3

'20' et' 20.0000' sont des nombres identiques. –

+0

La valeur est-elle citée ou non? – borrrden

+0

@borrrden: Non. J'ai imprimé jsonObject1 dans NSlog. la valeur du montant n'est pas citée .. – Mano

Répondre

0

Essayez d'obtenir la double valeur:

 
id jsonObject1 = [NSJSONSerialization JSONObjectWithData:responseData7 options:NSJSONReadingAllowFragments error:nil]; 
AmountArray = [[jsonObject1 valueForKey:@"Amt"] doubleValue]; 
+1

Vous ne voulez pas dire doubleValue au lieu de intValue? –

3

Le format JSON (comparer http://json.org) établit une distinction entre les chaînes et numéros. Les chaînes sont placées entre guillemets, par exemple

"Hello world" 
"20.0000" 
"20" 

Les chiffres ne sont pas enfermés dans des guillemets, par exemple

20.0000 
20 

Maintenant "20.0000" et "20" sont des chaînes complètement différentes, mais 20.0000 et 20 sont les même nombre réel. Les numéros JSON sont convertis en NSNumber (ou NSDecimalNumber). Mais ce n'est pas grave comment ce numéro est écrit dans le JSON, c'est le même nombre. Il ne fait pas sens de dire

la valeur réelle de la webservice est '20 .0000'

parce que la valeur du service Web est le nombre réel 20, peu importe ce nombre est écrit.

Si vous devez établir une distinction entre 20 et 20.0000 pour une raison quelconque, le service Web doit écrire les valeurs chaîne (entre guillemets).

Questions connexes