最近在写一个小例子的时候遇到对JSON数据的读取,在网上找许久也没发现关于连续写入的方式。
写个日志,记录一下!
有关JSON的jar包,里面还有一个队JSON文件的读取例子,
也许整体有点乱,但是下载包里的例子,看看就明白了!
1.存入json文件:
//创建一个JSON对象
JSONObject appObject = new JSONObject();
//将数据添加到对象中
appObject.put("type", type);
appObject.put("username", username);
appObject.put("password", password);
appObject.put("sendTime", sendTime);
此时数据应是这样的:{"type":"modify","username":"name","password":"pwd","sendTime":"20140822104954"}.
// Json文件路径
String path = “c:/...”;
File file = new File(path);
// 如果文件不存在、则创建该文件
if (!file.exists()) {
file.createNewFile();
}
//创建一个JSON数组
JSONArray appArray = new JSONArray();
将之前的JSON对象放进数组中
appArray.add(appObject);
JSONObject jsonObj;
jsonObj = new JSONObject();
//为JSON数组指定一个key
jsonObj.element("appdata", appArray);
//此时数据如下:{"appdata":[{"type":"modify","username":"name","password":"pwd","sendTime":"20140822105030"}]}
// 获取JSON数据字符串
String str = ReadFile(filePath);
if (str.length() > 0) {
// 获取JSON对象
jsonObj = JSONObject.fromObject(str);
// 获取JSON集合对象
JSONArray arr = jsonObj.getJSONArray("appdata");
arr.add(appObject);
} else {
JSONArray appArray = new JSONArray();
appArray.add(appObject);
jsonObj = new JSONObject();
jsonObj.element("appdata", appArray);
}//将JSON数据存储到文件中
FileWriter fileWriter = new FileWriter(filePath);
PrintWriter out = new PrintWriter(fileWriter);
out.write(jsonObj.toString());
out.println();
fileWriter.close();
out.close();
以上用到的读取JSON数据的方法:
public static String ReadFile(String path) {
File file = new File(path);
BufferedReader reader = null;
// 构造最后返回的json串
String laststr = "";
try {
// 以行为单位读取文件内容,一次读一整行:
reader = new BufferedReader(new FileReader(file));
String tempString = null;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 拼接数据信息
laststr = laststr + tempString;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return laststr;
}