【极简教程】从txt文本中解析JSON格式数据

在工作中,常常会遇到一些文件转换的问题,比如从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的方法,欢迎与我沟通交流。

推荐阅读更多精彩内容