导入依赖:
<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;
}