Android读写JSON格式的数据之JsonWriter和JsonReader

最近的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西。最近打算找一份Android的工作,要继续拾起以前的东西。公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才开始办公。不说这些了,下面开始今天的正文。

JSON格式的数据通常用于网络传输,尤其是在移动设备上与服务端进行数据交互。JSONXML比较有明显的优势。XML格式的数据非常臃肿,传递少量的数据就要附带很多额外的格式数据。而JSON除了少量的符号外,全部是真正的数据,所以有越来越多的程序用JSON来取代XMLJSON格式的数据不仅被广泛应用于网络传输,也经常用于本地存储。

JSON格式的数据可以存储数组和对象。数组用一对中括号([……])表示,对象用一对大括号({……})表示。数组和对象可以嵌套,例如,下面是一个用JSON表示的对象数组:
[{id:1,name:”Android将军”},{id:2,name:”Android将军”}]

Android SDK用于读写JSON格式数据的类是JsonReaderJsonWriter。这两个类可以处理数组和对象,处理数组的代码必须放在beginArrayendArray方法之间,处理对象的代码必须放在beginObjectendObject之间。

这里给出一个读写JSON文件案例,主Activity代码如下:

package com.gc.androidjsonpractice;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import android.os.Bundle;
import android.os.Environment;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Paint.Join;

import android.util.JsonReader;
import android.util.JsonWriter;
import android.widget.Toast;

/**
 * 功能:复习与练习Json的使用一
 * 
 * @author Android将军
 * 
 */
@SuppressLint("NewApi")
public class MainActivity extends Activity {

	private String filePath;
	private FileOutputStream fileOutputStream;
	private FileInputStream fileInputStream;

	@SuppressLint({ "NewApi", "SdCardPath" })
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//json文件存放路径
		filePath = Environment.getExternalStorageDirectory().toString()
				+ "/test.json";
		System.out.println("filePath:" + filePath);//查看实际路径

		try {

			fileOutputStream = new FileOutputStream(filePath);

			@SuppressWarnings("resource")
			//开始写JSON数据
			JsonWriter jsonWriter = new JsonWriter(new OutputStreamWriter(
					fileOutputStream, "UTF-8"));

			jsonWriter.beginObject();

			jsonWriter.name("id").value("1");

			jsonWriter.name("name").value("Android将军");

			jsonWriter.endObject();

			System.out.println("JSON数据写入完毕!");

			jsonWriter.close();
			// 开始读JSON数据
			System.out.println("开始读取JSON数据");

			fileInputStream = new FileInputStream(filePath);

			@SuppressWarnings("resource")
			JsonReader jsonReader = new JsonReader(new InputStreamReader(
					fileInputStream, "UTF-8"));

			jsonReader.beginObject();

			System.out.println("哈哈:"+jsonReader.toString());
			while (jsonReader.hasNext()) {

				if (jsonReader.nextName().equals("id")) {
					System.out.println("id:" + jsonReader.nextString());

				}
				if (jsonReader.nextName().equals("name")) {
					System.out.println("name:" + jsonReader.nextString());
				}
			}

			jsonReader.endObject();
			jsonReader.close();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}


 

程序运行结果如下:

Android读写JSON格式的数据之JsonWriter和JsonReader

转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/38730207

Android读写JSON格式的数据之JsonWriter和JsonReader,布布扣,bubuko.com

Android读写JSON格式的数据之JsonWriter和JsonReader

上一篇:css3媒体查询判断移动设备横竖屏


下一篇:使用eclipse调试android的framework源码