使用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();
}
}

浙公网安备 33010602011771号