spring boot读取json文件并实现接口查询
2020-08-17 本文已影响0人
打一枪放2炮
1.说明
最近需要在spring boot项目启动时读取json文件并保存到List<模型>中,然后需要在controller中去访问使用。为了还原这个使用场景我做了个例子。
2.准备json文件
将user.json文件复制到spring boot项目的resource目录下。文件内容如下:
[
{
"id":1,
"name": "小李",
"gender": "男",
"age": 18
},
{
"id":2,
"name": "小王",
"gender": "女",
"age": 18
}
]
3.编写User模型
@Data
public class User {
private Integer id;
private String name;
private String gender;
private Integer age;
}
4.编写UserDao
@Component
public class UserDao {
private static List<User> userList = new ArrayList<>();
@Value("classpath:user.json")
private Resource userResource;
@PostConstruct
public List<User> getUser(){
try {
String json = IOUtils.toString(userResource.getInputStream(), Charset.forName("UTF-8"));
userList = JSONObject.parseArray(json, User.class);
}
catch (Exception e) {
System.out.println(e.getMessage());
}
return userList;
}
}
5.编写UserController
@RestController
public class UserController {
@Autowired
UserDao userDao;
/**
* 根据ID查询用户
* @param id
* @return
*/
@GetMapping("/user/{id}")
public Result<User> getUserById(@PathVariable Integer id){
List<User> list = userDao.getUser();
User user = null;
for (User u:
list) {
if (u.getId().equals(id)){
user = u;
break;
}
}
return ResultUtil.ok(user);
}
/**
* 查询用户列表
* @return
*/
@GetMapping("/users")
public Result<List<User>> getUserById(){
return ResultUtil.ok(userDao.getUser());
}
}
6.测试
浏览器访问: