歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發:JSON數據的讀寫方法

用習慣了XML,總覺得JSON可讀性又差,也不好保存等等,到真正接觸了,才發現在Android上,JSON就像親兒子一樣容易管教。 

還是先看數據源,數據源我采用的是一系列的村民集合,村民的屬性如下。 

  1. public class Folk {    
  2.     String name;    
  3.     String career;    
  4.     String age;    
  5.     int salary;    
  6.     boolean sex;    
  7. }  

先看寫數據,數據是我假定一個村的數據,由一個arraylist填裝。通過一個for循環很容易取出了arraylist中的每個對象以及其數據,每個對象,即村民都可以生成一個JSONobject,這裡json和java面向對象的思想是多麼吻合。prey load! 
其次還有一個JSONarray對象,就是一個JSON自己的Arraylist。好比我們把自己的對象轉存到一個Json對象中,從我們的Arraylist中取出來,再裝進一個Json的Arraylist。好比我把一個個村名從一輛大卡車上接下來(從自己的ArrayList取),把他們穿戴整齊了(裝進Json對象中),再揮揮手把他們送上火星游的太空飛船(jsonArray),臨走我在飛船上掛上了village的標簽,火星上的同事會知道我的村民坐的是哪艘船。所有工序完成。 

本文源碼下載:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/Android源碼集錦/2011年/12月/Android開發:JSON數據的讀寫方法 /

代碼如下。

  1. public class MyJsonWriter {  
  2.     ArrayList<Folk> folks;  
  3.     File saveFile;  
  4.     public MyJsonWriter(ArrayList<Folk> folks){  
  5.         this.folks=folks;  
  6.     }  
  7.       
  8.     public void setFilePath(String filepath){  
  9.         saveFile=new File(filepath);  
  10.         try {  
  11.             saveFile.createNewFile();  
  12.         } catch (IOException e) {  
  13.             // TODO Auto-generated catch block   
  14.             e.printStackTrace();  
  15.         }  
  16.     }  
  17.       
  18.     public String getJsonData(){  
  19.         String jsonData = null;  
  20. //      String jsonData=new JSONStringer().object().key("village").value("abc").endObject().toString();   
  21.         try {  
  22.             StringBuilder builder=new StringBuilder();  
  23.             ArrayList<String> folksData=new ArrayList<String>();  
  24.             JSONArray array=new JSONArray();  
  25.             for(int i=0;i<folks.size();i++){  
  26.                 Folk folk=folks.get(i);  
  27.                 JSONObject jsonObject=new JSONObject();  
  28.                 jsonObject.put("name", folk.getName());  
  29.                 jsonObject.put("sex", folk.isSex()?"male":"female");  
  30.                 jsonObject.put("age", folk.getAge());  
  31.                 jsonObject.put("career", folk.getCareer());  
  32.                 jsonObject.put("salary", folk.getSalary());  
  33.                 folksData.add(jsonObject.toString());  
  34.                 array.put(jsonObject);  
  35.             }  
  36. //          JSONArray jsonArray=new JSONArray(folksData);   
  37.             int len =   array.length();  
  38.             jsonData=new JSONStringer().object().key("vallage").value(array).endObject().toString();  
  39.             System.out.println(jsonData);  
  40.             writeData(jsonData);  
  41.         } catch (JSONException e) {  
  42.             // TODO Auto-generated catch block   
  43.             e.printStackTrace();  
  44.         }  
  45.         return jsonData;  
  46.     }  
  47.   
  48.     private void writeData(String jsonData) {  
  49.         // TODO Auto-generated method stub   
  50.         try {  
  51.             BufferedReader reader=new BufferedReader(new StringReader(jsonData));  
  52.             BufferedWriter writer=new BufferedWriter(new FileWriter(saveFile));  
  53.             int len=0;  
  54.             char[] buffer=new char[1024];   
  55.             while((len=reader.read(buffer))!=-1){  
  56.                 writer.write(buffer, 0, len);  
  57.             }  
  58.             writer.flush();  
  59.             writer.close();  
  60.             reader.close();  
  61.         } catch (IOException e) {  
  62.             // TODO Auto-generated catch block   
  63.             e.printStackTrace();  
  64.         }  
  65.     }  
  66. }  
Copyright © Linux教程網 All Rights Reserved