在工作中,常常会遇到一些文件转换的问题,比如从txt格式转换为excel,还有从excel再转换为txt,有普通格式转换为JSON格式的,当然也有再转换回来的。
这些工作如果手动操作就想当麻烦了,但是好在可以程序处理,下面这个例子就是从txt文本中读取数据,再解析JSON格式数据的问题,让我们一起来看下处理过程。
主要分为两部分,下面是具体实现。
1.读取txt文件,一次性从内存中读取数据。
/**
* 解析txt文件
* @param filePath
* @return
*/
public static String readTxtFile(String filePath){
StringBuilder sb = new StringBuilder();
try {
String encoding="UTF-8";
File file=new File(filePath);
if(file.isFile() && file.exists()){ //判断文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null){
sb.append(lineTxt);
}
read.close();
}else{
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
return sb.toString();
}
2.解析JSON格式数据
解析JSON一般常用的工具包有Google的Gson,JackJson和阿里巴巴的fastjson。
这里我使用最常用的fastjson。
引入jar包:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
txt内容:
[
{
"city_name": "北京",
"city_id": "bj"
},
{
"city_name": "上海",
"city_id": "sh"
},
{
"city_name": "广州",
"city_id": "gz"
},
{
"city_name": "深圳",
"city_id": "sz"
}
]
下面是具体解析过程:
/**
* 把JSON文件转换为一行一行的数据
* @param txt
* @return
*/
private static String parseJson(String txt){
//获取jsonObject对象
JSONArray jsonArray = JSONObject.parseArray(txt);
StringBuilder sb = new StringBuilder();
for (Iterator iterator = jsonArray.iterator(); iterator.hasNext(); ) {
JSONObject jsonObject = (JSONObject) iterator.next();
String cityName = String.valueOf(jsonObject.get("city_name"));
String cityId = String.valueOf(jsonObject.get("city_id"));
sb.append(cityId).append("=").append(cityName).append("\n");
}
return sb.toString();
}
总结
以上就是最基本的读取txt文本和解析JSON的方法,欢迎与我沟通交流。