android下基本json串的生成與解析


以前就用過json串,不過是在java環境下面,如今轉移到android環境下,java里面生成解析json串的jar包與android中自帶的沖突,所以也只能用安卓自帶的。

 
先前查網上的資料,感覺很多都說的很亂,直接給出了例子,也不解釋一下就算完成,他們自己肯定是明白的,但是讓讀者理解起來肯定有點難度。而且解析的方法很多,而這里,我就介紹一種最原始最簡單的吧。希望我拙劣的表達能力不會影響到你們的理解。
 
首先我們先講一下json串格式
 
比如對象pet(寵物)
 
class pet{
 
int petid;//編號
 
String petname;//名稱
 
String pettype;//類型
 
}
 
那么對象的json串形式就是
 
{"pet":[{"petid":1000,"petname":"name1","pettype":"type1"}]}
 
而如果我們創建多個pet對象,那么字符串形式就為:
 
{"pet":[{"petid":1000,"petname":"name1","pettype":"type1"},{"petid":1002,"petname":"name2","pettype":"type2"}]}
 
這里定義的如果是int型,值就不要添加"號,如果String類型或者其他類型,則添加"。
 
一、生成json串
 
好了,下面我們來利用android自帶的JSONObject來創建一個json字符串。
 
 
[java] 
<span style="font-size:18px">public String petToJson(Pet pet) {  
        String jsonresult = "";//定義返回字符串  
        JSONObject object = new JSONObject();//創建一個總的對象,這個對象對整個json串  
        try {  
            JSONArray jsonarray = new JSONArray();//json數組,里面包含的內容為pet的所有對象  
            JSONObject jsonObj = new JSONObject();//pet對象,json形式  
            jsonObj.put("petid", pet.getPetid());//向pet對象里面添加值  
            jsonObj.put("petname", pet.getPetname());  
            jsonObj.put("pettype", pet.getPettype());  
            // 把每個數據當作一對象添加到數組里  
            jsonarray.put(jsonObj);//向json數組里面添加pet對象  
            object.put("pet", jsonarray);//向總對象里面添加包含pet的數組  
                        jsonresult = object.toString();//生成返回字符串  
        } catch (JSONException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        LogI("生成的json串為:"+jsonresult);  
        return jsonresult;  
    }</span>  
 
最后生成結果為:{"pet":[{"petid":100,"petname":"name1","pettype":"type1"}]}
 
當然,如果我們想生成多個對象,那么只需要多調用幾次
 
[java] 
<span style="font-size:18px">jsonarray.put(jsonObj);//向json數組里面添加pet對象</span>  
這個方法就可以了。
另外對於最外層的object我們可以這樣去理解,實際上我們生成的是
 
object{
 
List<pet> list;
 
}
 
這樣的類型,只不過最外面的object我們看不到而已。
二、解析json串
 
其實解析和生成是相對應的,怎么樣生成的,那么就應該怎么樣返過來解析
 
傳入的json={"pet":[{"petid":100,"petname":"name1","pettype":"type1"}]}
 
[java]  
<span style="font-size:18px">public Pet jsonToPet(String json){  
        if(json.startsWith("error")){//這里可以做一下檢測,如果不是json格式的就直接返回  
            return null;  
        }  
        Pet pet=new Pet();//准備返回的pet對象  
        try {  
            JSONObject jsonObject=new JSONObject(json);//我們需要把json串看成一個大的對象  
            JSONArray jsonArray=jsonObject.getJSONArray("pet");//這里獲取的是裝載有所有pet對象的數組  
            JSONObject jsonpet = jsonArray.getJSONObject(0);//獲取這個數組中第一個pet對象  
              
            String petid=jsonpet.getString("petid");//獲取pet對象的參數  
            String petname=jsonpet.getString("petname");  
            String pettype=jsonpet.getString("pettype");  
              
            pet.setPetid(petid);//把參數添加到pet對象當中。  
            pet.setPetid(petname);  
            pet.setPetid(pettype);  
        } catch (JSONException e) {  
            e.printStackTrace();  
        }  
        LogI("json To Pet:"+pet.toString());//打印出pet對象參數。  
        return pet;  
    }</span>  
 
三、總結
其實json串的解析是很簡單的,當然本文章中我之舉了一個最簡單的例子。實際應用中傳入的json串並不是標准的。有可能是:[{"petid":100,"petname":"name1","pettype":"type1"}]這樣的,那么對於這樣的很明顯這是一個數組形式,那么我們就直接用
 
[java]  
<span style="font-size:18px">JSONArray jsonArray=new </span><span style="font-size:18px">JSONArray</span><span style="font-size:18px">(json);</span>  
來解析就可以了。
 
當然具體的形式還有很多種,但是我們只要分清對象和數組這個相互包含的概念,就一定能夠解析出來。
 
轉載:http://www.2cto.com/kf/201309/244866.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM