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();
} } }
程序执行结果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYW5kcm9pZF9qaWFuZ2p1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/38730207
Android读写JSON格式的数据之JsonWriter和JsonReader的更多相关文章
- Android读取JSON格式数据
Android读取JSON格式数据 1. 何为JSON? JSON,全称为JavaScript Object Notation,意为JavaScript对象表示法. JSON 是轻量级的文本数据交换格 ...
- Android Volley获取json格式的数据
为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ...
- Android创建JSON格式数据
Android创建JSON格式数据 作为上一篇博客的补充,简单那解说了一下Android创建JSON格式数据的小Demo. 1. 创建JSON格式数据 对于Android创建JSON格式数据.因为An ...
- 使用google的GSON解析json格式的数据
GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...
- ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理
话不多说,直接进入主题. 需求:基于Http请求接收Json格式数据,返回Json格式的数据. 整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性 ...
- MVC学习系列6--使用Ajax加载分部视图和Json格式的数据
Ajax的应用在平时的工作中,很是常见,这篇文章,完全是为了,巩固复习. 我们先看看不使用json格式返回分部视图: 先说需求吧: 我有两个实体,一个是出版商[Publisher],一个是书[Book ...
- asp.net MVC控制器中返回JSON格式的数据时提示下载
Asp.net mvc在接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据.代码如下: 视图中js代码: $("# ...
- SQLyog-直接导出JSON格式的数据
前言:以前做过的一个项目,有这样的一个需求使用搜索引擎来查询对应的区域信息,不过区域信息要先导出来,并且数据格式是JSON格式的,在程序中能实现这个需求,不过下面的这种方法更加的简单,通过 ...
- hive中导入json格式的数据(hive分区表)
hive中建立外部分区表,外部数据格式是json的如何导入呢? json格式的数据表不必含有分区字段,只需要在hdfs目录结构中体现出分区就可以了 This is all according to t ...
随机推荐
- JavaScript实现私有属性
原文:JavaScript实现私有属性 JavaScript被很多人认为并不是一种面向对象语言,原因有很多种,比如JavaScript没有类,不能提供传统的类式继承:再比如JavaScript不能实现 ...
- haproxy ssl相关配置
ssl-default-bind-options [<option>]... This setting is only available when support for OpenSSL ...
- 国内5款优秀的WEB前端框架
1. JX(腾讯) 官网地址:http://alloyteam.github.io/JX/#home JX 是一个类似 Google Closure Library 的 Web 前端开发框架,服务于 ...
- 关于smali插桩
虽说是老生常谈的东西了,稍微记录一下. 我觉得最重要的就是寄存器的问题了,如果需要额外的寄存器,要在smali函数的最前面将寄存器数量增加到需要的数量. 在smali代码中,寄存器有两种表示方式,一种 ...
- 【floyd存字典序路径】【HDU1385】【Minimum Transport Cost】
题目大意 求多组i到j的最短路径 并输出字典序最小.... 现在只会floyd的方式 利用dis[i][j] 表示i到j的路径中i 后面的节点 更新是比较dis[i][j] dis[i][k]. 记住 ...
- CSS 浏览器默认样式
不要再说div天生就是block——这句话应该换成:浏览器默认样式天生规定了div是block——所以才导致了div是block!是默认样式规定的,不是浏览器的内核规定的. 没有设置block的元素, ...
- Zepto.js touch模块深入分析 解决手机点击事件
源码: // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT li ...
- UVA 1343 The Rotation Game
题意: 给出图,往A-H方向旋转,使中间8个格子数字相同.要求旋转次数最少,操作序列字典序尽量小. 分析: 用一维数组存24个方格.二维数组代表每个方向对应的7个方格.IDA*剪枝是当8-8个方格中重 ...
- iOS8毛玻璃效果
UIBlurEffect*blueEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; UIVisualEffectView* ...
- Maven管理Android项目1
maven-android-plugin网站:https://code.google.com/p/maven-android-plugin/wiki/GettingStarted android ...