2017-10-21 88 views
2
讀出的值

請告訴更好的方式來從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

回答

1

如果您的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標記爲接受的答案(單擊對號)。謝謝! –