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

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

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

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

[{id:1,name:”Android将军”},{id:2,name:”Android将军”}]

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

这里给出一个读写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();
		}

	}

}

程序运行结果如下:

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

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

时间: 2024-10-16 04:22:51

Android读写JSON格式的数据之JsonWriter和JsonReader的相关文章

Android读取JSON格式数据

Android读取JSON格式数据 1. 何为JSON? JSON,全称为JavaScript Object Notation,意为JavaScript对象表示法. JSON 是轻量级的文本数据交换格式 JSON 独立于语言 JSON 具有自我描写叙述性,更易理解 相比 XML 的不同之处: 没有结束标签 更短 读写的速度更快 使用数组 不使用保留字 JSON 使用 JavaScript 语法来描写叙述数据对象,可是 JSON 仍然独立于语言和平台.JSON 解析器和 JSON 库支持很多不同的

Android Volley获取json格式的数据

为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和json对象数组等.当然,java本身也有获取json对象的方法,然而为了更好地适应移动互联网,google专门为其做了特殊的优化,因而应该尽可能地使用Volley库. Volley官方文档:https://developer.android.com/training/volley/index.htm

Android创建JSON格式数据

Android创建JSON格式数据 作为上一篇博客的补充,简单那讲解了一下Android创建JSON格式数据的小Demo. 1. 创建JSON格式数据 对于Android创建JSON格式数据,由于Android官方提供了相应了put(key, value)等方法,因此代码十分简单,如下所示: JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); JSONObject object_1 =

Python怎么读写json格式文件

JSON-是一个轻量级的数据交换格式.点击打开百度百科 JSON维基百科:http://zh.wikipedia.org/wiki/JSON json模块 关于json的官方文档:点击打开链接 本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创.不定期更新,有错误请指正. Sina微博关注:@The_Third_Wave 如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址. d

SQLyog-直接导出JSON格式的数据

      前言:以前做过的一个项目,有这样的一个需求使用搜索引擎来查询对应的区域信息,不过区域信息要先导出来,并且数据格式是JSON格式的,在程序中能实现这个需求,不过下面的这种方法更加的简单,通过SQL+SQLyog工具的特点直接将区域信息以JSON格式的形式导出来! 1:区域表的结构信息 2:区域关系表的结构信息 3:这个SQL语句是本次博文的核心,就是用他来拼出JSON格式的数据的,当然,仔细的看一下的话也比较简单,只是这种思路值得小记一笔 SELECT '{"regionId"

ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

话不多说,直接进入主题. 需求:基于Http请求接收Json格式数据,返回Json格式的数据. 整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性对token进行验证,并通过时间戳的方式统一处理接收与返回的时间格式. 请求Json格式: { "Cmd": "login", "Token": "", "PageNo": 0, "OnePageNu

hive中导入json格式的数据(hive分区表)

hive中建立外部分区表,外部数据格式是json的如何导入呢? json格式的数据表不必含有分区字段,只需要在hdfs目录结构中体现出分区就可以了 This is all according to this guide: http://blog.cloudera.com/blog/2012/12/how-to-use-a-serde-in-apache-hive/ 1 hive> ADD JAR /home/hadoop/hive-serdes-1.0-SNAPSHOT.jar; 2 Added

将Array格式的数据解析成JSON格式的数据

在编程的过程中,数据的传输格式如何,会影响开发的效率和后期代码的维护, 并且现在许多的js中支持了JSON格式的数据, 比如angular.nodejs.本篇文章主要讲解Array(数组)形式数据的解析.其它格式的数据会在后续的文章中进行书写. (1)定义一个解析Array的类JSONArray. public class JSONArray { @SuppressWarnings("unchecked") public static String toJSONString(List

使用JSONObject类来生成json格式的数据

使用map构建json格式的数据 使用java bean来构建json对象