springboot项目读取resources下的json文件
时间: 2023-11-10 16:11:05 浏览: 200
在Spring Boot中,可以使用`Resource`对象来读取`resources`目录下的JSON文件。可以使用`classpath:`前缀来指定资源路径,例如:
```java
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.FileCopyUtils;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class JsonReader {
public static void main(String[] args) throws IOException {
ClassPathResource resource = new ClassPathResource("data.json");
byte[] bytes = FileCopyUtils.copyToByteArray(resource.getInputStream());
String json = new String(bytes, StandardCharsets.UTF_8);
System.out.println(json);
}
}
```
在上面的代码中,首先创建了一个`ClassPathResource`对象,其参数为`data.json`,即要读取的JSON文件名。然后使用`getInputStream()`方法获取文件的输入流,并使用`FileCopyUtils`类的`copyToByteArray()`方法将输入流转换为字节数组。最后将字节数组转换为字符串,并打印出来。
需要注意的是,`ClassPathResource`对象的参数中不需要包含`classpath:`前缀,因为该前缀会自动添加。
如果要将JSON文件读取为Java对象,可以使用Jackson库,例如:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.core.io.ClassPathResource;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class JsonReader {
public static void main(String[] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
ClassPathResource resource = new ClassPathResource("data.json");
byte[] bytes = resource.getInputStream().readAllBytes();
MyObject myObject = objectMapper.readValue(bytes, MyObject.class);
System.out.println(myObject);
}
}
class MyObject {
private int id;
private String name;
// getters and setters
}
```
在上面的代码中,首先创建了一个`ObjectMapper`对象,用于将JSON字符串转换为Java对象。然后创建了一个`ClassPathResource`对象,并使用`getInputStream()`方法获取文件的输入流。接着使用`readAllBytes()`方法将输入流读取为字节数组,并使用`readValue()`方法将字节数组转换为Java对象。最后将Java对象打印出来。
需要注意的是,`MyObject`类的属性名与JSON文件中的字段名必须相同,否则需要使用`@JsonProperty`注解指定字段名。
阅读全文