使用alibaba fastjson解析Java字符串为Java对象

fastjson地址

maven中央仓库: https://mvnrepository.com/artifact/com.alibaba/fastjson

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.75</version>
</dependency>

fastjson最常用的两个API

package com.alibaba.fastjson;
public abstract class JSON {
      // Java对象转换为JSON字符串
      public static final String toJSONString(Object object);
      //JSON字符串转换为Java对象
      public static final <T> T parseObject(String text, Class<T> clazz, Feature... features);
}

示例:

import beans.Children;
import beans.JsonRootBean;
import com.alibaba.fastjson.JSON;

public class Main {
    public static void main(String[] args) {
        String json = "{\n" +
                "  \"code\": \"OK\",\n" +
                "  \"message\": \"\",\n" +
                "  \"data\": {\n" +
                "    \"departmentId\": 320000,\n" +
                "    \"name\": \"江苏省\",\n" +
                "    \"children\": [\n" +
                "      {\n" +
                "        \"departmentId\": 320200,\n" +
                "        \"name\": \"无锡市\",\n" +
                "        \"children\": [\n" +
                "          {\n" +
                "            \"departmentId\": 320211,\n" +
                "            \"name\": \"滨湖区\",\n" +
                "            \"children\": []\n" +
                "          }\n" +
                "        ]\n" +
                "      },\n" +
                "      {\n" +
                "        \"departmentId\": 320500,\n" +
                "        \"name\": \"苏州市\",\n" +
                "        \"children\": []\n" +
                "      }\n" +
                "    ]\n" +
                "  }\n" +
                "}";
        JsonRootBean jsonRootBean = JSON.parseObject(json,JsonRootBean.class);
        System.out.println(jsonRootBean);
        System.out.println("////////");
        for (Children child : jsonRootBean.getData().getChildren()) {
            System.out.println(child.getName());
        }
    }
}

完整示例:

import beans.Data;
import beans.JsonRootBean;
import com.alibaba.fastjson.JSON;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;

public class Main {
    /**
     * 使用方法:
     * 1. 将需要转化的Json字符串放入json.txt文件中
     * 2. 通过https://www.json.cn/json/json2java.html将json转换为Java实体
     * 3. 运行代码,生成的文件在file.xlsx中
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet();

        String json = txt2String(new File("1.txt"));
        JsonRootBean jsonRootBean = JSON.parseObject(json, JsonRootBean.class);
        for (int i = 0; i < jsonRootBean.getData().size(); i++) {
            sheet.createRow(i);
            sheet.getRow(i).createCell(0);
            sheet.getRow(i).createCell(1);
            sheet.getRow(i).getCell(0).setCellValue(jsonRootBean.getData().get(i).getPart());
            sheet.getRow(i).getCell(1).setCellValue(jsonRootBean.getData().get(i).getDuration());
            System.out.println(jsonRootBean.getData().get(i).getPart() + "\t" + jsonRootBean.getData().get(i).getDuration());
        }
        File new_file = new File(new File("").getAbsolutePath() + "/" + "file.xlsx");
        FileOutputStream outputStream = new FileOutputStream(new_file);
        workbook.write(outputStream);
    }

    public static String txt2String(File file) {
        StringBuilder result = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
            String s = null;
            while ((s = br.readLine()) != null) {//使用readLine方法,一次读一行
                result.append(System.lineSeparator() + s);
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result.toString();
    }
}

posted @ 2021-08-16 17:10  iiiiiiiivan  阅读(238)  评论(0)    收藏  举报