使用JAVA Jackson打印位于JSON文件上的对象字符串值

时间:2018-05-23 12:47:11

标签: java json jackson

我会保持简单 - 尝试使用JACKSON打印此JSON文件的用户名(' user'):

{
"creds" : {
          "user": "Y9CJG1756",
          "pass": "12222#$1"
 },
"env": {
        "qa": {
               "url": "https://www.walla.com/"
         }
  }
}

我正在运行此功能,但只能找到一种方法来打印整个对象的字符串' creds'而不仅仅是用户名。

public static void isJsonStringWorks(String filePath) {
    try {
        JsonNode objectValue;

        byte[] jsonData = Files.readAllBytes(Paths.get(filePath));

        ObjectMapper objectMapper = new ObjectMapper();

        JsonNode rootNode = objectMapper.readTree(jsonData);
        objectValue = rootNode.get("creds");
        System.out.println("object is: " + objectValue + " ,\n" + rootNode);
    } catch (Exception e) {
        System.out.println("Could not read the JSON file");
    }

}

非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

正确的代码是:

objectValue = rootNode.get("creds").get("user").asText()

您还应考虑以下选项:

  • 介绍数据模型的Java表示形式,并将源JSON字符串作为Java对象读取(使用objectMapper.readValue(...)方法)。之后,可以访问通常的Java bean(root.getCreds().getUser()

  • 之类的值
  • 使用JsonPath访问JSON中的“深层”值以简化JSON值查找。例如,可以获得信用/用户价值,如:

    String json = "...";
    Object document = Configuration.defaultConfiguration().jsonProvider().parse(json);
    String value = JsonPath.read(document, "$.creds.user")
    

答案 1 :(得分:0)

你正走在正确的道路上。 您可以致电objectValue.get('user')