乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Gson中fromJson方法的返回值

       流浪的星星318 2017-03-25

      Gson是google的一個(gè)Json庫(kù),使用非常簡(jiǎn)單。在Java中,只要引入包,創(chuàng)建對(duì)象就可以用了。

      fromJson是Gson提供的一個(gè)方法。用來(lái)將一個(gè)Json數(shù)據(jù)轉(zhuǎn)換為對(duì)象。調(diào)用方法是:new Gson().fromJson(Json_string,class)

      需要注意的是,它會(huì)“盡量”轉(zhuǎn)換出對(duì)象,哪怕得到的對(duì)象從數(shù)據(jù)上看是不完整的。

      這樣,可以通過(guò)一個(gè)Json數(shù)據(jù)轉(zhuǎn)換出多種類(lèi)型的對(duì)象,完全看使用者的需求。當(dāng)用XSLT格式化XML文件時(shí)也是這種思路。

      需要注意的是,在調(diào)用fromJson時(shí),參數(shù)Json_string的情況決定了返回值的情況:null、對(duì)象還是拋出異常

      • 長(zhǎng)度為0或者是null,那么返回結(jié)果是null;
      • 非空,但不符合Json格式,比如“abc”,會(huì)拋出異常;
      • 非空,則會(huì)返回一個(gè)非null的對(duì)象,無(wú)法獲得值的成員變量使用缺省值,這就是上面的”盡量“的意思。當(dāng)然,這種情況下,也有可能得到一個(gè)所有成員變量均為缺省值的對(duì)象;

      再說(shuō)下這個(gè)”盡量“??雌饋?lái)是有副作用的。比如原始數(shù)據(jù)完全提供錯(cuò)了,通過(guò)fromJson也能得到一個(gè)對(duì)象實(shí)體。而這種實(shí)體可能是不可用的。所以,基本上需要自己增加對(duì)象可用性驗(yàn)證代碼,在通過(guò)fromJson獲得了非null對(duì)象后,進(jìn)行一次驗(yàn)證。

      當(dāng)然好處也是大大的。比如可以將一次從服務(wù)器獲取的數(shù)據(jù)轉(zhuǎn)換成不同的對(duì)象,展示在不同的地方。所以,應(yīng)該是利大于弊。

      舉例:

      1. import com.google.gson.Gson;  
      2.   
      3. public class TestJson  
      4. {  
      5.     private int age;  
      6.     private String name;  
      7.   
      8.     public String show()  
      9.     {  
      10.         return new String("name:" + name + "/age:" + age);  
      11.     }  
      12.   
      13.     public static void main(String[] args)  
      14.     {  
      15.         String[] source =new String[]{  
      16.                 "",  
      17.                 "abc",  
      18.                 "{}",  
      19.                 "{\"nick_name\":\"Jack\"}",  
      20.                 "{\"name\":\"Anna\",\"id\":5}",  
      21.                 "{\"name\":\"Pluto\",\"age\":15,\"id\":10}"  
      22.         };  
      23.           
      24.         Gson g=new Gson();  
      25.         TestJson x=null;  
      26.         StringBuffer info=null;  
      27.         for(int i=0;i<source.length;i++)  
      28.         {  
      29.             info=new StringBuffer();  
      30.             info.append(i).append(":").append(source[i]).append("\n\t");  
      31.             try  
      32.             {  
      33.                 x=g.fromJson(source[i], TestJson.class);  
      34.                 info.append((x == null) ? "NULL" : x.show());  
      35.             }catch(Exception e)  
      36.             {  
      37.                 info.append(e.getClass().getName());  
      38.             }  
      39.             System.out.println(info.toString());  
      40.         }  
      41.     }  
      42. }  


      運(yùn)行的結(jié)果是:

      1. 0:  
      2.     NULL  
      3. 1:abc  
      4.     com.google.gson.JsonSyntaxException  
      5. 2:{}  
      6.     name:null/age:0  
      7. 3:{"nick_name":"Jack"}  
      8.     name:null/age:0  
      9. 4:{"name":"Anna","id":5}  
      10.     name:Anna/age:0  
      11. 5:{"name":"Pluto","age":15,"id":10}  
      12.     name:Pluto/age:15  


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多