从JSONObject的

问题描述:

读出的值

请告诉更好的方式来从JSONObject读取值更好的办法:从JSONObject的

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

我需要从JSONObject阅读,你可以请建议哪一个更好。

+1

这里我们就没有更好的办法,这是一个品味的问题使用'常量'类或不是,你也可以在当前类中使用一些常规常量 – 2017-10-21 09:38:48

+0

我将使用第二个。如果你可以在整个项目中保持键的一致性,更容易重构。 –

+0

使用下面的任何一个性能问题? StringofferSubCategory = offeringJson.getJSONObject( “offeringSubCategor”)的getString( “代码”)。 – Narasimha

如果您的JSON解析代码在单个Java文件中很好地模块化,而不是选项#1可能会提供一个更短的代码,并具有稍好的可读性。但是,如果这个代码遍布在你的应用程序中,那么一定要用选项#2来代替。否则任何数据方案重构可能是一场噩梦;)

性能。这真的没关系。 Java编译器将(很!)可能内嵌选项#2中的常量,导致与#1相同的字节码。

多个值。如果你真的打算从同一JSONObject多个值,我建议你分手你这样的代码:

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

好的。但我的问题是“xxx”这个值读取多个类的情况下哪个更好String xxx = json.getString(Constant.xxx); (或)String xxx = json.getString(“xxx”)。类常量{公共静态最终字符串xxx =“xxx”} – Narasimha

+0

@Narasimha正如我在我的回答中所说,如果您从多个类调用'getString'比使用选项#2可能是一个更安全的路线;) –

+1

嘿,男人,如果这回答了您的问题,确保将upvote/mark标记为接受的答案(单击对号)。谢谢! –