zoukankan      html  css  js  c++  java
  • android JSON

    引用:http://wiseideal.iteye.com/blog/1173616

    [/color]用习惯了XML,总觉得JSON可读性又差,也不好保存等等,到真正接触了,才发现在android上,JSON就像亲儿子一样容易管教。 

    还是先看数据源,数据源我采用的是一系列的村民集合,村民的属性如下。 


    Java代码  收藏代码
    1. public class Folk {  
    2.     String name;  
    3.     String career;  
    4.     String age;  
    5.     int salary;  
    6.     boolean sex;  


    引用

    先看写数据,数据是我假定一个村的数据,由一个arraylist填装。通过一个for循环很容易取出了arraylist中的每个对象以及其数据,每个对象,即村民都可以生成一个JSONobject,这里json和java面向对象的思想是多么吻合。prey load! 
    其次还有一个JSONarray对象,就是一个JSON自己的Arraylist。好比我们把自己的对象转存到一个Json对象中,从我们的Arraylist中取出来,再装进一个Json的Arraylist。好比我把一个个村名从一辆大卡车上接下来(从自己的ArrayList取),把他们穿戴整齐了(装进Json对象中),再挥挥手把他们送上火星游的太空飞船(jsonArray),临走我在飞船上挂上了village的标签,火星上的同事会知道我的村民坐的是哪艘船。所有工序完成。 

    看代码 


    Java代码  收藏代码
    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. }  


    引用

    愉快的时间总是过的特别快,村民们要回家了。这时候来了一辆宇宙飞船,上面挂着我临走时贴上的标签,看来是相亲门回家了。(得到了JSONarray的对象)。打开舱门,乡亲们陆陆续续的走了下来,我为每个人做了次详细的检查,保证不会让奇怪的生物混进来,乡亲们神清气爽的重回地球表面。(循环中取出JSONArray中的JSON对象,并装填到我们自己的对象中,并存入arraylist) 

    上代码 


    Java代码  收藏代码
    1. public class MyJsonReader {  
    2.     String jsonData;  
    3. //  ArrayList<Folk> folks;  
    4.     public MyJsonReader(String jsonData){  
    5.         this.jsonData=jsonData;  
    6.     }  
    7.       
    8.     public ArrayList<Folk> getJsonData(){  
    9.         ArrayList<Folk> folks=new ArrayList<Folk>();  
    10.         try {  
    11.             JSONObject jsonObject=new JSONObject(jsonData);  
    12.             JSONArray jsonArray=jsonObject.getJSONArray("vallage");  
    13.             int len = jsonArray.length();  
    14.             for(int i=0;i<jsonArray.length();i++){  
    15.                 JSONObject json=jsonArray.getJSONObject(i);  
    16.                 Folk folk=new Folk();  
    17.                 folk.setName(json.optString("name"));  
    18.                 folk.setAge(json.optString("age"));  
    19.                 folk.setCareer(json.optString("career"));  
    20.                 folk.setSalary(json.optInt("salary"));  
    21.                 folk.setSex(json.optString("sex").equals("male")?true:false);  
    22.                 folks.add(folk);  
    23.             }  
    24.         } catch (JSONException e) {  
    25.             // TODO Auto-generated catch block  
    26.             e.printStackTrace();  
    27.         }  
    28.         return folks;  
    29.     }  
    30. }  


    JSON的读写在android很简单,出奇的简单,让我这个准备花一个周五下午的人后面变得十分蛋疼的来写日志。 
    总的来说还有些小地方需要注意 
    JSONArray中添加json对象的方法不是用的add而是put 

    Java代码  收藏代码
    1. jsonData=new JSONStringer().object().key("vallage").value(array).endObject().toString();  


    .object和endObject成对出现 这很像XML写里面的starttag和endtag 
    最后我将一些的村民数据做为了一个village json对象的value,真的把这个Json对象幻想成了一艘宇宙飞船。。。 



     
  • 相关阅读:
    c#驱动操作mongodb辅助类MongoDBHelper
    c#多线程lock无效
    利用Aspose.Words将html转成pdf和将html转成word
    前后端值映射的问题
    本机部署流程详解
    Git 安装配置手册
    js对象数组(JSON) 根据某个共同字段 分组
    jquery中的$.fn的用法
    JSON.parse()与JSON.stringify()的区别
    添加编辑 时 数据不可重复验证
  • 原文地址:https://www.cnblogs.com/sode/p/2384504.html
Copyright © 2011-2022 走看看