android中JSON数据的读写方法
来源:互联网 发布:珍妮曲奇授权的淘宝店 编辑:程序博客网 时间:2024/04/30 09:47
还是先看数据源,数据源我采用的是一系列的村民集合,村民的属性如下。
- 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();
- }
- }
- }
引用
愉快的时间总是过的特别快,村民们要回家了。这时候来了一辆宇宙飞船,上面挂着我临走时贴上的标签,看来是相亲门回家了。(得到了JSONarray的对象)。打开舱门,乡亲们陆陆续续的走了下来,我为每个人做了次详细的检查,保证不会让奇怪的生物混进来,乡亲们神清气爽的重回地球表面。(循环中取出JSONArray中的JSON对象,并装填到我们自己的对象中,并存入arraylist)
上代码
- public class MyJsonReader {
- String jsonData;
- // ArrayList<Folk> folks;
- public MyJsonReader(String jsonData){
- this.jsonData=jsonData;
- }
- public ArrayList<Folk> getJsonData(){
- ArrayList<Folk> folks=new ArrayList<Folk>();
- try {
- JSONObject jsonObject=new JSONObject(jsonData);
- JSONArray jsonArray=jsonObject.getJSONArray("vallage");
- int len = jsonArray.length();
- for(int i=0;i<jsonArray.length();i++){
- JSONObject json=jsonArray.getJSONObject(i);
- Folk folk=new Folk();
- folk.setName(json.optString("name"));
- folk.setAge(json.optString("age"));
- folk.setCareer(json.optString("career"));
- folk.setSalary(json.optInt("salary"));
- folk.setSex(json.optString("sex").equals("male")?true:false);
- folks.add(folk);
- }
- } catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return folks;
- }
- }
JSON的读写在android很简单,出奇的简单,让我这个准备花一个周五下午的人后面变得十分蛋疼的来写日志。
总的来说还有些小地方需要注意
JSONArray中添加json对象的方法不是用的add而是put
- jsonData=new JSONStringer().object().key("vallage").value(array).endObject().toString();
.object和endObject成对出现 这很像XML写里面的starttag和endtag
最后我将一些的村民数据做为了一个village json对象的value,真的把这个Json对象幻想成了一艘宇宙飞船。。。
- android中JSON数据的读写方法
- 【Android】JSON数据的读写方法
- Android中通过json向MySql中读写数据的方法
- Android中通过json向MySql中读写数据的方法(二)
- Android中使用Gson解析JSON数据的方法
- Android中Json数据读取与创建的方法
- Android中生成json格式数据的几种方法
- vtk中读写raw数据的方法
- Android读写JSON格式的数据之JsonWriter和JsonReader
- Android下Json数据的读写与创建
- [Android基础]读写xml、json格式的数据
- Android读写JSON格式的数据之JsonWriter和JsonReader
- Android中SdCard的数据读写
- Android 中 XmlPullParser 读写 XML 的方法
- android中读写cookie的方法
- Android中读写XML的方法
- Android 中 XmlPullParser 读写 XML 的方法
- Android之json数据的解析方法
- 从那一天起,你就成了我的全部
- 【转载】你的PagedLOD 为什么没有卸载
- 细数电脑史上10大强悍黑客
- hdu1061
- Dtree+jQuery实现动态树结构
- android中JSON数据的读写方法
- Ubuntu下安装Mysql 以及mysql-query-browser
- CURD
- android腾讯微博Oauth2.0认证以及登录
- NWChem 6.1.1 RedHat 5.4, Intel 11.1, OpenMPI 1.3.4
- 2012 ACM/ICPC Asia Regional Changchun Online-LianLianKan
- CIE 色度空间
- css3
- 一个 Java 的 Socket 服务器和客户端通信的例子