JSONObject中取String 值的幾種方法和對比

今天寫代碼的時候發現之前寫JSON中取String值喜歡這樣寫:java

 

[java] view plain copyjson

 

  1. String kewen = (String)test.get("kewen");  


其實這樣寫比較挫,通常來講JSON對象中取String類型的值有這兩種方法:app

 

 

[java] view plain copyspa

 

  1. test.getString("name");  
  2. test.optString("name");  


而後來看一下這兩種方法有什麼不一樣.net

 

 

[java] view plain copy對象

 

  1. public static void main(String[] args)  
  2. {  
  3.     JSONObject test = new JSONObject();  
  4.     test.put("name", "kewen");  
  5.     test.put("empty", null);  
  6.   
  7.     System.out.println("test.optString(\"empty\"):" +test.optString("empty"));  
  8.     System.out.println("test.optString(\"name\"):" +test.optString("name"));  
  9.     System.out.println("test.getString(\"name\"):" + test.getString("name"));  
  10.     System.out.println("test.getString(\"empty\"):" + test.getString("empty"));  
  11. }  


運行一把就會看到這樣的結果blog

 

 

[java] view plain copyip

 

  1. test.optString("empty"):  
  2. test.optString("name"):kewen  
  3. test.getString("name"):kewen  
  4. Exception in thread "main" net.sf.json.JSONException: JSONObject["empty"] not found.  
  5.     at net.sf.json.JSONObject.getString(JSONObject.java:2247)  
  6.     at basicUtils.JSONUtil.main(JSONUtil.java:41)  


簡單的說,在JSONObjecy的key存在值得時候,二者是沒有什麼區別的,而後若是key對應的value爲null,那麼getString方法就會報錯。get

 

 

至於爲何會這樣咱們能夠看一下getString的源碼源碼

 

[java] view plain copy

 

  1. public String getString( String key ) {  
  2.    verifyIsNull();  
  3.    Object o = get( key );  
  4.    if( o != null ){  
  5.       return o.toString();  
  6.    }  
  7.    throw new JSONException( "JSONObject[" + JSONUtils.quote( key ) + "] not found." );  
  8. }  
相關文章
相關標籤/搜索