java从项目中读取json文件转为map或者实体类

导入依赖:

 <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
        </dependency>

 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

json文件Test.json,内容:

{
  "test": [
    {
      "id": "111",
      "name": "haha"
    },
    {
      "id": "222",
      "name": "呵呵"
    }
  ]
}

实体类:

package com.gkl1120;

import lombok.Data;

/**
 * @author ctx_gao kailong
 * @date 2020/6/11 11:49
 */
@Data
public class IdAndName {
    private String id;
    private String name;
}

在不依赖web容器的环境下:

package com.gkl1120;

import net.sf.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @author ctx_gao kailong
 * @date 2020/6/11 11:08
 */
public class Test01 {
    public static void main(String[] args) throws IOException {

        BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("javase/src/main/resources/Test.json")));
        int line = 1;
        String context = null;
        String json = "";
        //json内容转化为Map集合通过遍历集合来进行封装
        while ((context = bufferedReader.readLine()) != null) {
            //Context就是读到的json数据
            json += context;
            line++;
        }
        Map<String , Object> result= JSONObject.fromObject(json);
        List<Map<String , Object>> list1 = (List<Map<String, Object>>) result.get("test");
        // 下面写法遍历会报错jsonObject不能转实体类
        // List<IdAndName> list2 = (List<IdAndName>) result.get("test");
         // 转list实体对象
         Object jsonData = result.get("test");
        List<IdAndName> list2 = new Gson().fromJson(new Gson().toJson(jsonData), new TypeToken<List<IdAndName>>(){}.getType());
        System.out.println(list1);
        System.out.println(list2);

    }
}

打印结果:

[{"id":"111","name":"haha"},{"id":"222","name":"呵呵"}]
[{"id":"111","name":"haha"},{"id":"222","name":"呵呵"}]

在web容器下:

@GetMapping("/test01")
    public Object test01() throws IOException {
        Resource resource = resourceLoader.getResource("classpath:/Test.json");
        InputStream is = resource.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String data = "";
        String result = "";
        while ((data = br.readLine()) != null) {
            result += data;
        }
        br.close();
        isr.close();
        is.close();
        Map<String, Object> resultMap = JSONObject.fromObject(result);
        List<Map<String, Object>> list1 = (List<Map<String, Object>>) resultMap.get("test");
        return list1;
    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值