【问题标题】:I'm trying to read a simple Json file but im getting saved a null. What am i doing wrong? My json contains only 4 fields我正在尝试读取一个简单的 Json 文件,但我保存了一个空值。我究竟做错了什么?我的 json 只包含 4 个字段
【发布时间】:2021-03-20 13:28:25
【问题描述】:

我正在尝试使用以下代码编写一个 micrservice 以使用 jackson mapper 读取 json

      @Bean
    CommandLineRunner runner(ResponseService responseService) {
        return args -> {
            // read JSON and load json
            ObjectMapper mapper = new ObjectMapper();
            TypeReference<List<Response>> typeReference1 = new TypeReference<List<Response>>() {};
            InputStream inputStream1 = TypeReference.class.getResourceAsStream("/json/response.json");
            try {
                List<Response> responses = mapper.readValue(inputStream1, typeReference1);
                responseService.save(responses);
                System.out.println(responses);
                System.out.println("response saved");
            } catch (IOException e) {
                System.out.println("not saved" + e.getMessage());
            }

        };
    }

    @Service
public class ResponseService {
    private ResponseRepository responseRepository;

    public ResponseService(ResponseRepository responseRepository) {
        this.responseRepository = responseRepository;
    }

    public Iterable<Response> list() { return responseRepository.findAll();
    }

    public void save(List<Response> users) {
        responseRepository.saveAll(users);
    }
}

【问题讨论】:

  • 很难从提供的类参考中回答。你可以检查这些: 第一:"/json/response.json" 这个文件路径好吗?第二:responseService.save(responses); System.out.println(responses); 这输出响应了吗?
  • 1.我想这是我的路径 - C:\Users\Desktop\spring-boot-jsontodb-master\src\main\resources\json - response.json
  • 2.是的,我得到的响应为 null
  • [ { "LOGADDR": "1000002624", "CATEGORY": "ADD", "NAME": "POLYTEC COMPOSITES GERMANY", "STATUS": "ACTI" }, { "LOGADDR": “1000002625”、“类别”:“添加”、“名称”:“德国 POLYTEC 复合材料”、“状态”:“ACTI”}]

标签: java json spring spring-boot


【解决方案1】:

正如您在评论中所说,您的路径是:

C:\Users\Desktop\spring-boot-jsontodb-master\src\main\resources\json\response.json

所以你应该使用 "/json/response.json" 而不是 json/response.json

InputStream inputStream1 = TypeReference.class.getResourceAsStream("json/response.json");

只需删除第一个斜线。

【讨论】:

  • 引起:java.lang.IllegalArgumentException:参数“src”为空
  • json - response.json这是你的文件名吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 2018-06-08
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-15
  • 1970-01-01
相关资源
最近更新 更多