2017-10-21 76 views
2

S'il vous plaît dire la meilleure façon de lire la valeur de JSONObject:meilleure façon de lire les valeurs de JSONObject

// #1 
String offerSubCategory = offeringJson.getJSONObject("offeringSubCategory").getString("code"); 
// #2 
String offerSubCategory = offeringJson.getJSONObject(Constants.offeringSubCategory).getString(Constants.code); 

Je dois lire JSONObject pourriez-vous s'il vous plaît suggérer que l'on est mieux.

+1

Il n'y a pas de meilleure façon ici, il est une question de goût d'utiliser un 'Constantes 'classer ou pas, vous pouvez également utiliser des constantes régulières dans la classe actuelle –

+0

Je voudrais utiliser le 2ème .. Plus facile à refactoriser si vous pouvez garder les clés cohérentes à travers le projet –

+0

Il ya leur problème de performance en utilisant ci-dessous ?? StringofferSubCategory = offeringJson.getJSONObject ("offeringSubCategor"). GetString ("code"); – Narasimha

Répondre

1

Si votre code d'analyse JSON est bien modularisé dans un seul fichier Java, l'option # 1 pourrait fournir un code plus court avec une lisibilité légèrement meilleure. Mais, si ce code est dispersé partout dans votre application que, par tous les moyens, allez avec l'option # 2. Sinon, toute refactorisation de schéma de données pourrait être un cauchemar;)

Performance. Cela n'a vraiment pas d'importance. Le compilateur Java va (très!) Probablement aligner les constantes dans l'option # 2, résultant dans le même bytecode que # 1.

Valeurs multiples. Si vous êtes vraiment l'intention de lire plusieurs valeurs d'un même JSONObject, je vous suggère de rupture de votre code comme ceci:

JSONObject json = offeringJson.getJSONObject("offeringSubCategory"); 
String xxx = json.getString("xxx"); 
String yyy = json.getString("yyy"); 
... 
+0

Ok. Mais ma question est "xxx" cette valeur lisant à partir de plusieurs classes que cas ce qui est meilleur String xxx = json.getString (Constant.xxx); (ou) Chaîne xxx = json.getString ("xxx"). Constantes de classe {public static final Chaîne xxx = "xxx"} – Narasimha

+0

@Narasimha Comme je l'ai dit dans ma réponse, si vous appelez 'getString' de plusieurs classes que d'utiliser l'option # 2 pourrait être une route plus sûre;) –

+1

Hey man, if cela a répondu à votre question assurez-vous d'upvote/marquer comme la réponse acceptée (cliquez sur la coche). Merci! –