解析json文件为json字符串并json对象
json文件
json文件名:city.json ,路径放在resource下
部分内容:
[
{
“name”: “北京市”,
“areaList”: [
{
“name”: “北京城区”,
“areaList”: [
“怀柔区”,
“密云区”,
“延庆区”,
“丰台区”,
“顺义区”,
“门头沟区”,
“朝阳区”,
“石景山区”,
“平谷区”,
“通州区”,
“大兴区”,
“昌平区”,
“海淀区”,
“西城区”,
“东城区”,
“房山区”
]
}
]
},
{
“name”: “天津市”,
“areaList”: [
{
“name”: “天津城区”,
“areaList”: [
“宝坻区”,
“河东区”,
“和平区”,
“津南区”,
“河北区”,
“河西区”,
“东丽区”,
“静海区”,
“滨海新区”,
“蓟州区”,
“武清区”,
“南开区”,
“西青区”,
“宁河区”,
“北辰区”,
“红桥区”
]
}
]
}
]
新建对象
省对象
import lombok.Data;
import java.util.List;
/**
* @author jg
* @date 2021/9/10
*/
@Data
public class JsonBean1 {
private String name;
private List<JsonBean2> arealist;
}
市对象
import lombok.Data;
import java.util.List;
/**
* @author jg
* @date 2021/9/10
*/
@Data
public class JsonBean2 {
private String name;
private List<String> arealist;
}
返回对象(这里我的需求市不要区的信息)
import lombok.Data;
import java.util.List;
/**
* @author jg
* @date 2021/9/10
*/
@Data
public class JsonRootBean {
private String name;
private List<String> areaList;
}
解析json文件
返回json字符串,两种方式
public static String fileToJson1(){
Resource resource = new DefaultResourceLoader().getResource("classpath:city.json");
String s = null;
try {
InputStream inputStream = resource.getInputStream();
s = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
return s;
}
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xdbigdata.dataAlarm.entity.JsonRootBean;
import com.xdbigdata.dataAlarm.entity.json.JsonBean1;
import com.xdbigdata.dataAlarm.entity.json.JsonBean2;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public static String fileToJson(String fileName) {
String jsonStr = "";
try {
File jsonFile = new File(fileName);
FileReader fileReader = new FileReader(jsonFile);
Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "utf-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
fileReader.close();
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
json字符串转json对象
public static List<JsonRootBean> analysisJson1(String str) {
// JSONArray array = JSON.parseArray(str);
// for (int i=0; i<array.size(); i++) {
// System.out.println(array.get(i));
// }
List<JsonRootBean> reslut = new ArrayList<>();
List<JsonBean1> list = JSON.parseArray(str, JsonBean1.class);
//取出需要的信息,重新封装对象,不需要区级信息
for (JsonBean1 j : list) {
JsonRootBean json = new JsonRootBean();
json.setName(j.getName());
ArrayList<String> palce = new ArrayList<>();
for (JsonBean2 j2 : j.getArealist()) {
palce.add(j2.getName());
}
json.setAreaList(palce);
reslut.add(json);
// System.out.println(json);
}
System.out.println(reslut.size());
return reslut;
}
测试
两种方式
public static void main(String[] args) {
getPalce();
}
public static List<JsonRootBean> getPalce1() {
//获取json文件地址
// String path = StringUtil.class.getClassLoader().getResource("city.json").getPath();
String s = fileToJson1();
List<JsonRootBean> list = analysisJson1(s);
return list;
}
public static List<JsonRootBean> getPalce() {
//获取json文件地址
// String path = StringUtil.class.getClassLoader().getResource("city.json").getPath();
String rootPath = System.getProperty("user.dir");
String path=rootPath+"/src/main/resources/city.json";
System.out.println(path);
String s = fileToJson(path);
List<JsonRootBean> list = analysisJson1(s);
return list;
}