`
wiseideal
  • 浏览: 449064 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

android中JSON数据的读写方法

 
阅读更多
[/color]用习惯了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();
		}
	}
}


引用

愉快的时间总是过的特别快,村民们要回家了。这时候来了一辆宇宙飞船,上面挂着我临走时贴上的标签,看来是相亲门回家了。(得到了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数据的读写方法。 一、JSON数据格式 JSON数据格式基于JavaScript语法,但独立于语言,具有以下基本结构: 1. 对象(Object):以花括号 `{}` 包裹,键值对以逗号分隔,键(Key...

    android JSON数据的读写方法

    总结,Android中处理JSON数据是开发者必备技能之一,通过理解JSON的基本结构,合理选择解析库,以及掌握读写和UI结合的方法,能够高效地实现数据的交换和显示。在实际项目中,应注重性能优化和错误处理,确保应用的...

    老罗android 解析json数据源码

    在Android中,我们通常使用Gson库、org.json库或Jackson库来解析和生成JSON数据。 老罗在讲解中可能会涉及以下几个关键知识点: 1. **Gson库**:Google提供的一个强大的Java库,可以将Java对象转换为JSON字符串,...

    Android中通过json向MySql中读写数据的方法

    Android 中通过 JSON 向 MySQL 中读写数据的方法是指在 Android 应用程序中使用 JSON(JavaScript Object Notation)格式将数据上传到 MySQL 数据库中,并从 MySQL 数据库中读取数据。这种方法可以实现 Android 应用...

    android JSON数据的读写方法 互相转化

    JSON数据的读写方法_jsontoobject obje to json JsonTest.rar )JSON数据的读写方法_jsontoobject obje to json JsonTest.rar )

    Android读取本地json文件的方法(解决显示乱码问题)

    - **Android操作JSON格式数据**:Android提供了Gson库、org.json库等工具来解析和生成JSON数据。 - **Android数据库操作**:SQLite是Android内置的轻量级数据库,可以用于持久化数据。 - **Android Activity操作**:...

    android demo,json数据格式的案例的应用

    本示例是关于如何在Android应用中解析和使用JSON数据的一个实战演示。让我们深入探讨一下这个"android demo,json数据格式的案例的应用"。 首先,JSON是一种轻量级、易于人读写且易于机器解析的格式,它基于...

    Android利用Json来进行网络数据传输

    在Android系统中,自3.0版本开始,SDK内置了Json相关的类,如`org.json`包下的`JSONObject`和`JSONArray`,可以方便地进行Json数据的创建、解析和操作。 然而,对于Android 3.0之前的版本,或者开发者需要更高级的...

    android 利用socket 发送Json数据demo

    在Android开发中,利用Socket发送Json数据是一种常见的网络通信方式,尤其在移动应用与服务器进行实时交互时。本文将深入探讨如何在Android中实现这一功能,包括Json数据格式的使用、Socket通信的基本原理以及实际的...

    android简析json数据

    本文将简析Android中处理JSON数据的几种方法,为Android开发者提供一些实用技巧。 首先,理解JSON的基本结构是至关重要的。JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集,采用完全独立于语言的文本...

    Android实现读写JSON数据的方法

    总结来说,Android中读写JSON数据涉及以下几个步骤: 1. 获取JSON字符串,可以来自网络请求、本地文件或其他数据源。 2. 使用`org.json`库解析JSON字符串为`JSONObject`或`JSONArray`对象。 3. 通过对象的getter...

    android使用JSON进行网络数据交换(服务端、客户端)的实现.rar

    总结,这个压缩包的实现可能涵盖了Android客户端使用Retrofit发送网络请求、解析JSON数据,以及服务器端处理JSON请求并返回的过程。在实际项目中,还需要考虑安全性、性能优化和错误处理等多方面因素。

    android使用JSON进行网络数据交换(服务端、客户端)的实现_网页交互.zip

    在Android开发中,网络数据交换是常见的需求,而JSON(JavaScript Object Notation)因其轻量级、易读写和高效的特点,成为Android与服务器之间数据交换的首选格式。本教程将详细讲解如何在Android客户端和服务端...

    Android通过json向MySQL中读写数据的方法详解【写入篇】

    本文实例讲述了Android通过json向MySQL中写入数据的方法。分享给大家供大家参考,具体如下: 先说一下如何通过json将Android程序中的数据上传到MySQL中: 首先定义一个类JSONParser.Java类,将json上传数据的方法...

    Android客户端与服务器端的json数据交互(内含大量知识点)

    在Android中,我们通常使用`org.json`库或Gson库来处理JSON数据。`org.json`库提供了基本的解析和生成JSON的功能,而Gson库则更强大,可以直接将Java对象转换为JSON字符串,反之亦然。 1. **发送JSON请求**:客户端...

    Android通过json向MySQL中读写数据的方法详解【读取篇】

    3. Android端接收到JSON数据后,使用JSON解析库(如Gson或org.json)解析JSON字符串,提取所需信息。 4. 使用提取的数据执行相应的业务逻辑,例如更新UI或存储到本地数据库。 在实际项目中,为了提高用户体验和安全...

    Android json解析数据

    JSON格式简洁、易于读写,并且被大多数编程语言支持,包括Java,因此在Android中处理JSON数据是开发者必备的技能。 **一、JSON基本结构** JSON有两种主要数据类型:对象和数组。对象是键值对的集合,用花括号{}...

    android json 解析jar

    Android JSON解析jar指的是在Android项目中用于解析JSON数据的Java库,通常以.jar文件形式提供。 本主题主要关注的是`gson`库,这是一个由Google提供的强大JSON库,它允许将Java对象转换为JSON字符串,以及将JSON...

Global site tag (gtag.js) - Google Analytics