2015-01-08 62 views
0

JSON很容易使用,但是有時候寫多個子元素會給在Java中反覆寫入getJSONObject(「」)帶來痛苦。有沒有簡單的方法可以避免重複呼叫並讓代碼更乾淨?閱讀JSON元素的Java方法

+1

將JSON解析爲列表和地圖,然後訪問該結構。這很簡單。 –

+0

@HotLicks我有我的JSON不會總是有相同的元素,與列表和地圖索引將依賴項。例如,我們有下面的情況下,在一種情況下,我們將有價值NewQuote和其他我們不然列出和地圖將允許在報價之後處於第二位,而大型XML則難以管理。用我的方法,無論我的位置是按照標籤名稱進行的,如果存在,它的工作將返回「」。可能不是乾淨的方法,但我是測試人員,想到分享我的經驗。 Akshay

+0

這沒有任何意義。對於任何方案,如果有遺漏的元素,你必須以某種方式確定。 –

回答

-1

嘗試多輪後,我想出了下面的方法,你只是通過JSON對象和所有具有「/」的元素到下面的Java方法,它會讀取JSON值。注 - 此代碼更適用於字符串值,您可以根據自己的需求更多地進行自定義。

public static String getJSONTagValue(JSONObject partData, String xpath) { 
    String output=""; 
    String[] getPrmString=xpath.split("/"); 
    try { 
     if (partData.has(getPrmString[0])){ 
      for (int i=0;i<getPrmString.length;i++){ 
       if (partData.has(getPrmString[i]) && i!=getPrmString.length-1){ 

         partData=partData.getJSONObject(getPrmString[i]); 

       } else if (partData.has(getPrmString[i])) { 
        output=partData.get(getPrmString[i])+""; 
        if (output.contains("xsi:nil")){ 
         output=""; 
        } else if (output.contains(".0")){ 
         output=output.replace(".0", ""); 
        } 
       }    
      }   
     } 
     if ("".equalsIgnoreCase(output)){ 
      System.out.println("Missing xpath in Response ",xpath); 
     } 
    } catch (JSONException e) { 
     System.out.println("Missing xpath in Response ",xpath) 
     e.printStackTrace(); 
    } 
    return output; 
}