歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發:JSON數據的讀寫方法

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

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