从大型响应对象中检索几个字段

问题描述

我正在调用Google Directory API,只需要返回几个字段即可。我是Java / Spring的新手,所以我试图找出解决此问题的最佳方法。我正在这样发出请求:

restTemplate.exchange(url,HttpMethod.GET,req,Object,userKey);

我目前将其作为对象,但是不确定是否正确。当我只需要几个字段时,我不想映射出它返回的非常大的对象。是否可以访问phone,organizations,locations字段?

res.getClass().getField("phones")对我不起作用。

出于目的,我们可以考虑对象的形状:

{ 
    phones: [type: String,number: String],organizations: [title: String],locations: [buildingId: String]  
}

解决方法

您可以将响应JSON解析为JsonNode。

ObjectMapper映射器= new ObjectMapper(); JsonNode jsonNode = mapper.readTree(“ [在这里输入您的JSON]”)); 之后,仅获取您需要的字段。例如:

jsonNode.get(“ request”)。get(“ phones”)。get(“ type”)。asText()

或只是一个电话对象

,

您应该可以执行以下操作。这里的“用户”是 com.google.api.services.admin.directory.model.User

    List<User> users = result.getUsers();
    if (users == null || users.size() == 0) {
        System.out.println("No users found.");
    } else {
        System.out.println("Users:");
        for (User user : users) {
            System.out.println(user.getName().getFullName());
        }
    }