Java中List或者HashMap对象-序列化和反序列化并附读写文件操作

关于常用的序列化工具可以看下文章 浅析若干Java序列化工具
闲言少叙,直接上代码。
Json格式的序列化和反序列化使用alibaba的Fastjson,Maven项目需要引用包
 

    com.alibaba
     fastjson
     1.1.25
 

之后就可以直接写代码了
     
Listlist=new ArrayList();
		String listString = JSON.toJSONString(list, true);
		readAndWriteJson.writeFile("D:\\ljx.txt", listString);
		
		String listString2=readAndWriteJson.readFile("D:\\ljx.txt");
		List list2 = JSON.parseArray(listString2, Entity.class);

注意:Entity是类,可以自己定义。
下面的代码是文件操作的工具类
package *****;


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;




public class readAndWriteJson {




    /**
	 * 将字符串写如文件
	 * 
	 * @param filePath 文件所在路径
	 * @param input 字符串
	 * @throws IOException 异常
	 */
	public static void writeFile(String filePath, String input) throws IOException {
		FileWriter fw = new FileWriter(filePath);
		PrintWriter out = new PrintWriter(fw);
		out.write(input);
		out.println();
		fw.close();
		out.close();
	}
    /**
	 * 读取文本文件内容
	 * 
	 * @param filePath文件所在路径
	 * @return 文本内容
	 * @throws IOException 异常
	 */
	public static String readFile(String filePath) throws IOException {
		StringBuffer sb = new StringBuffer();
		readToBuffer(sb, filePath);
		return sb.toString();
	}
	
	/**
	 * 将文本文件中的内容读入到buffer中
	 * 
	 * @param bufferbuffer
	 * @param filePath文件路径
	 * @throws IOException异常
	 */
	public static void readToBuffer(StringBuffer buffer, String filePath) throws IOException {
		InputStream is = new FileInputStream(filePath);
		String line; // 用来保存每行读取的内容
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		line = reader.readLine(); // 读取第一行
		while (line != null) { // 如果 line 为空说明读完了
			buffer.append(line); // 将读到的内容添加到 buffer 中
			buffer.append("\n"); // 添加换行符
			line = reader.readLine(); // 读取下一行
		}
		reader.close();
		is.close();
	}




	
}



为了代码重用写下了类可以帮助序列化和反序列化链表或者HashMap


import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class JsonSerilizable {

	/* 将链表序列化为字符串存入json文件中 */
	public static String serilizableForList(Object objList, String OutfilePathName)
			throws IOException {

		String listString = JSON.toJSONString(objList, true);// (maps,CityEntity.class);
		readAndWriteJson.writeFile(OutfilePathName, listString);
		return listString;
	}

	/* 将json文件中的内容读取出来,反序列化为链表 */
	public static  List deserilizableForListFromFile(String InputfilePathName, Class clazz)
			throws IOException {

		String listString2 = readAndWriteJson.readFile(InputfilePathName);
		List list2 = JSON.parseArray(listString2, clazz);
		return list2;
	}

	/* 将HashMap序列化为字符串存入json文件中 */
	public static String serilizableForMap(Object objMap, String OutfilePathName)
			throws IOException {

		String listString = JSON.toJSONString(objMap, true);// (maps,CityEntity.class);
		readAndWriteJson.writeFile(OutfilePathName, listString);
		return listString;
	}

	/* 将json文件中的内容读取出来,反序列化为HashMap */
	public static  HashMap deserilizableForMapFromFile(String InputfilePathName,
			Class clazz) throws IOException {
		String listString2 = readAndWriteJson.readFile(InputfilePathName);
		Map map = JSON.parseObject(listString2, new TypeReference>() {
		});
		return (HashMap) map;
	}
	
	
	
	
	//使用方法 注意Entity为随机定义,使用时用自己的类名替换下就可以用了
	/*String pathName = "src/test/java/com/...../resources/file.json";

	List entityList = new ArrayList();
	JsonSerilizable.serilizableForList(entityList, pathName);

	List entityList2 = JsonSerilizable
			.deserilizableForListFromFile(pathName, Entity.class);
	
	
	HashMap Map = new HashMap();
	JsonSerilizable.serilizableForMap(Map, pathName);
	HashMap Map2 = JsonSerilizable
			.deserilizableForMapFromFile(pathName, Entity.class);*/

}








你可能感兴趣的:(Java,基础,Java,应用)