实现JSON数据的存储和读取
事前准备:
//创建一个Crime类
public class Crime {
private String mTitle;
private UUID mUUID;
private Date mDate;
private boolean isSolved; public Crime(){
mUUID = UUID.randomUUID();
mDate = new Date();
}
}
//创建CrimeLab类 以单例的方式存储一堆Crime
public class CrimeLab {
private static CrimeLab sCrimeLab; private ArrayList<Crime> mCrimeItems;
private Context mContext; private CrimeLab(Context context){
mContext = context;
mCrimeItems = new ArrayList<>();
for (int i=0; i<20; ++i){
Crime crime = new Crime();
crime.setTitle("#Crime"+i);
crime.setIsSolved(i % 2 == 0 ? true : false);
mCrimeItems.add(crime);
}//创建20个Crime
}
}
1.将Crime对象存储到File中并读取
前提知识:
1.context.openFileOuputStream();
http://blog.sina.com.cn/s/blog_6e5195850100zssn.html
//2.Criem类 创建 toJson()方法
public JsonObject toJson(){
JsonObject object = new JsonObject();
object.put("CrimeTitle",mTitle);
object.put("CrimeDate",mDate);
.....
return object;
}//将Crime转化成JsonObject
3.JsonToken
将文本解析为json格式的类。
使用:
//创建JsonCrime
public JsonCrime{
private String mFileName = "...";
private Context mContext; public JsonCrime(String fileName,Context context){
mFileName = fileName;
mContext = context;
}
//将Crime对象的数据保存到File中
public saveCrime(ArrayList<Crime> crimeItems){
JsonArray jsonArray = new JsonArray();
for (Crime c:crimeItems){
jsonArray.put(c.toJson);
}//将全部的Crime放入jsonArray中
FileOutputStream fos = context.openFileOutput(String fileName,int mode);//取得文件的输出流
Writer writer = new OutputStreamWriter(fos);//字节流变成字符流
String data = jsonArray.toString;//重点:array可以转化成String类型
writer.write(data);//将jsonArray的信息写入到文件中
} //从File中读取数据
public ArrayList<Crime> loadCrime(){
FileInputStream is = mContext.openFileInputStream();
Reader reader = new InputStreamReader(is);//字节流转化成字符流
BufferedInputStream bis = new BufferedInputStream(reader);//套一层缓冲流
StringBuilder sb = new StringBuilder();
while((String str = bis.readLine()) != null){
sb.append(str);
}
JsonArray jsonArray =(JsonArray)new JsonToken(sb.toString).nextValue();
//将String类型转成json类型的方法
.....
}
}
实现JSON数据的存储和读取的更多相关文章
- json数据的存储与读取
1. json数据格式: data = [ {"key1":"xxx","item":"ddd"}, {"k ...
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...
- 使用 SharedPreferences 实现数据的存储和读取
在开发的过程中我们必须遇到的就是如何对用户的数据进行有效的存储以及读取.我们举个例子,现在我们使用app,当我们登陆一个账号的时候选择记住密码软件就会记住我们的账号以及密码,我们退出当前账号,就可以直 ...
- Numpy用于数组数据的存储和读取
Python的Numpy模块可用于存储和读取数据: 1.将一个数组存储为二进制文件 Numpy.save:将一个数组以.npy的格式保存为二进制文件 调用格式:numpy.save(file, arr ...
- json数据的key的读取和替换
读取json的key: /** * @Description: 递归读取所有的key * @Param: * @return: * @throws Exception * @author: hw * ...
- 保存json数据到本地和读取本地json数据
private void saveJson(JsonBean bean) { File file = new File(getFilesDir(), "json.txt"); Bu ...
- (第二章第四部分)TensorFlow框架之TFRecords数据的存储与读取
系列博客链接: (第二章第一部分)TensorFlow框架之文件读取流程:https://www.cnblogs.com/kongweisi/p/11050302.html (第二章第二部分)Tens ...
- AsyncHttpClient来完成网页源代码的显示功能,json数据在服务器端的读取还有安卓上的读取
一.使用AsyncHttpClient来完成网页源代码的显示功能: 首先.我们引入 步骤: 1.添加网络权限 2.判断网页地址是否为空 3.不为空的情况下创建客户端对象 4.处理get/post请求 ...
- php基础系列之 数据的存储和读取
·文件处理 ·写入一个文件 1,打开这个文件.如果这个文件不存在,需要先创建它 2,将数据写入这个文件 3,关闭这个文件 ·从一个文件读出数据 1,打开这个文件.如果这个文件不能打开(例如,文件不存在 ...
随机推荐
- 基于vue2.0的一个分页组件
分页组件在项目中经常要用到之前一直都是在网上找些jq的控件来用(逃..),最近几个项目用上vue了项目又刚好需要一个分页的功能.于是百度发现几篇文章介绍的实在方式有点复杂, 没耐心看自己动手造轮子写了 ...
- hiho 分冶专题
hiho的每周一题都不会很难,基本上就是一些很裸和经典的问题,这一次写了几道分冶专题的题,做个总结. 分冶最简单的就是二分,二分说简单,很简单,不过7,8行代码,不过也常常写挂,写成无限循环. 直接看 ...
- USB驱动开发
1.usb特点 2.usb class 3.
- MySQL的基本数据类型与数据类型优化
1.选择优化的数据类型的标准 1)更小的通常更好. 一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为他们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期 ...
- 小端存储(little Endian)大端存储(big Endian)
小端存储--低内存低字节 87654321 字节或半字节的最低位字节(Lowest Significant Bit,LSB)存放于内存最低位字节地址上.即最低地址存放的最低字节,为Power PC,I ...
- jquery判断客户端的类型
针对不同客户端下载链接的页面响应样式不一样,更人性点而已 //匹配客户端类型 var isAndroid = navigator.userAgent.toLowerCase().match(/andr ...
- mysql解压版配置
2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\Program Files\MySQL\mysql-5.6.13-win32" ...
- java中如何将char数组转化为String
1.直接在构造String时建立. char data[] = {'s', 'g', 'k'}; String str = new String(data); 2.String有方法可以直接转换. S ...
- 全国计算机等级考试二级教程-C语言程序设计_第4章_选择结构
switch什么时候用break,什么时候不用break 调用break:一次执行一个分支,输入一个数据,对应一个级别 不调用break:连续执行多个分支 if...else 可以处理任何情况,大于小 ...
- springMVC3学习(四)--訪问静态文件如js,jpg,css
假设你的DispatcherServlet拦截的是*.do这种URL.就不存在訪问不到静态资源的问题 假设你的DispatcherServlet拦截了"/"全部的请求,那同一时候对 ...