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. }  
相关文章
相关标签/搜索