解析json文件再json字符串转json对象

解析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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值