加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Android开发:JSON数据的读写技巧

发布时间:2021-11-24 18:50:27 所属栏目:教程 来源:互联网
导读:用习惯了XML,总觉得JSON可读性又差,也不好保存等等,到真正接触了,才发现在Android上,JSON就像亲儿子一样容易管教。 还是先看数据源,数据源我采用的是一系列的村民集合,村民的属性如下。 public class Folk { String name; String career; String age;

用习惯了XML,总觉得JSON可读性又差,也不好保存等等,到真正接触了,才发现在Android上,JSON就像亲儿子一样容易管教。
还是先看数据源,数据源我采用的是一系列的村民集合,村民的属性如下。
 
public class Folk {    
    String name;    
    String career;    
    String age;    
    int salary;    
    boolean sex;    
}  
先看写数据,数据是我假定一个村的数据,由一个arraylist填装。通过一个for循环很容易取出了arraylist中的每个对象以及其数据,每个对象,即村民都可以生成一个JSONobject,这里json和java面向对象的思想是多么吻合。prey load!
其次还有一个JSONarray对象,就是一个JSON自己的Arraylist。好比我们把自己的对象转存到一个Json对象中,从我们的Arraylist中取出来,再装进一个Json的Arraylist。好比我把一个个村名从一辆大卡车上接下来(从自己的ArrayList取),把他们穿戴整齐了(装进Json对象中),再挥挥手把他们送上火星游的太空飞船(jsonArray),临走我在飞船上挂上了village的标签,火星上的同事会知道我的村民坐的是哪艘船。所有工序完成。
 
 
 
 
代码如下。
 
public class MyJsonWriter {  
    ArrayList<Folk> folks;  
    File saveFile;  
    public MyJsonWriter(ArrayList<Folk> folks){  
        this.folks=folks;  
    }  
      
    public void setFilePath(String filepath){  
        saveFile=new File(filepath);  
        try {  
            saveFile.createNewFile();  
        } catch (IOException e) {  
            // TODO Auto-generated catch block   
            e.printStackTrace();  
        }  
    }  
      
    public String getJsonData(){  
        String jsonData = null;  
//      String jsonData=new JSONStringer().object().key("village").value("abc").endObject().toString();   
        try {  
            StringBuilder builder=new StringBuilder();  
            ArrayList<String> folksData=new ArrayList<String>();  
            JSONArray array=new JSONArray();  
            for(int i=0;i<folks.size();i++){  
                Folk folk=folks.get(i);  
                JSONObject jsonObject=new JSONObject();  
                jsonObject.put("name", folk.getName());  
                jsonObject.put("sex", folk.isSex()?"male":"female");  
                jsonObject.put("age", folk.getAge());  
                jsonObject.put("career", folk.getCareer());  
                jsonObject.put("salary", folk.getSalary());  
                folksData.add(jsonObject.toString());  
                array.put(jsonObject);  
            }  
//          JSONArray jsonArray=new JSONArray(folksData);   
            int len =   array.length();  
            jsonData=new JSONStringer().object().key("vallage").value(array).endObject().toString();  
            System.out.println(jsonData);  
            writeData(jsonData);  
        } catch (JSONException e) {  
            // TODO Auto-generated catch block   
            e.printStackTrace();  
        }  
        return jsonData;  
    }  
  
    private void writeData(String jsonData) {  
        // TODO Auto-generated method stub   
        try {  
            BufferedReader reader=new BufferedReader(new StringReader(jsonData));  
            BufferedWriter writer=new BufferedWriter(new FileWriter(saveFile));  
            int len=0;  
            char[] buffer=new char[1024];   
            while((len=reader.read(buffer))!=-1){  
                writer.write(buffer, 0, len);  
            }  
            writer.flush();  
            writer.close();  
            reader.close();  
        } catch (IOException e) {  
            // TODO Auto-generated catch block   
            e.printStackTrace();  
        }  
    }  
}  

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读