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

來源:互聯網
上載者:User

以前就用過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>  來解析就可以了。 當然具體的形式還有很多種,但是我們只要分清對象和數組這個相互包含的概念,就一定能夠解析出來。  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.