从资源中读取json文件并在JAVA中转换成json字符串

新手上路,请多包涵

我在我的代码中硬编码了这个 JSON 字符串。

 String json = "{\n" +
              "    \"id\": 1,\n" +
              "    \"name\": \"Headphones\",\n" +
              "    \"price\": 1250.0,\n" +
              "    \"tags\": [\"home\", \"green\"]\n" +
              "}\n"
;

我想将其移动到资源文件夹并从那里读取,我如何在 JAVA 中执行此操作?

原文由 Subham Saraf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 571
2 个回答
try(InputStream inputStream =Thread.currentThread().getContextClassLoader().getResourceAsStream(Constants.MessageInput)){
            ObjectMapper mapper = new ObjectMapper();
            JsonNode jsonNode = mapper.readValue(inputStream ,
                    JsonNode.class);
            json = mapper.writeValueAsString(jsonNode);
        }
        catch(Exception e){
            throw new RuntimeException(e);
        }

原文由 Subham Saraf 发布,翻译遵循 CC BY-SA 4.0 许可协议

根据我的经验,这是从类路径读取文件的最可靠模式。 [1]

 Thread.currentThread().getContextClassLoader().getResourceAsStream("YourJsonFile")

它给你一个 InputStream [2] 可以传递给大多数 JSON 库。 [3]

 try(InputStream in=Thread.currentThread().getContextClassLoader().getResourceAsStream("YourJsonFile")){
//pass InputStream to JSON-Library, e.g. using Jackson
    ObjectMapper mapper = new ObjectMapper();
    JsonNode jsonNode = mapper.readValue(in, JsonNode.class);
    String jsonString = mapper.writeValueAsString(jsonNode);
    System.out.println(jsonString);
}
catch(Exception e){
throw new RuntimeException(e);
}

[1] 将文件加载为 InputStream 的不同方式

[2] 尝试使用资源 vs Try-Catch

[3] https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core

原文由 jschnasse 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题