java - 如何访问 User.getAddresses() 和 User.getPhones() 返回的 Java 对象中的数据?

标签 java api

com.google.api.services.admin.directory.model.User ,许多方法,例如 getAddresses()getPhones(),返回一个我不知道如何处理的 Java 对象。

使用toString(),我可以看到我想要的数据在对象中(看起来像 HashMap 列表),但我不知道如何将其转换为我可以访问的表单,例如 UserAddressUserPhone 的列表或数组?

我还想知道如何构建此类对象,以便我可以更新用户(尽管我认为问题第一部分的答案可能会让如何构建它们变得显而易见)?

我已经能够更新不涉及此类对象的其他内容,因此一般情况下我不需要阅读和更新方面的帮助,但我现在已经在这些对象上苦苦挣扎了几天,并且可以'搞不懂。谢谢。

最佳答案

Google Directoy API 使用 JSON 进行通信。用于与 API 通信的 Java 客户端库解析 JSON 并将其序列化为 Java 对象,以便更轻松地在代码中使用。看看这里,了解它是如何工作的:https://code.google.com/p/google-http-java-client/wiki/JSON

当前版本的库的问题是它没有将 User 类中的所有字段序列化为可用对象。相反, map 或 map 列表用于复杂字段。例如,phones 字段应转换为 UserPhone 对象列表,但改为 map 列表。唯一被正确序列化的字段是 name 字段,它是一个 UserName 对象。

手动将映射转换为正确对象的一种方法是使用像 Gson 这样的 json 解析器并解析映射。像这样:

Gson gson = new GsonBuilder().create();

ArrayList phones = (ArrayList) user.getPhones();
for (Object phone : phones) {
    UserPhone userPhone = gson.fromJson(phone.toString(), UserPhone.class);
    System.out.println(userPhone.getType() + "=" + userPhone.getValue());
}

关于java - 如何访问 User.getAddresses() 和 User.getPhones() 返回的 Java 对象中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468149/

相关文章:

java - 在 Java 中,new 和 local 之间有性能差异吗?

发布请求后,IOS 出现错误,并带有附加符号 "\"

javascript - 通过 G+ API 登录不会使用户登录到 YouTube 上的正确帐户

php - Facebook api php在我被标记的地方获取 friend 照片

java - MySQL - SQLException : No suitable driver found for jdbc:derby://

java - 我是否需要设置 Maven 才能使用 Maven ant 依赖任务?

java - 在 Java 中计算截断奇异值分解的最佳方法

json - 如何按市值获取 coingecko API 的前 300 个硬币的列表?

Javascript、Twitch API 调用、重复图像/空返回

java - JavaFx 和 @FXML 中的访问修饰符