在 com.google.api.services.admin.directory.model.User ,许多方法,例如 getAddresses()
和 getPhones()
,返回一个我不知道如何处理的 Java 对象。
使用toString()
,我可以看到我想要的数据在对象中(看起来像 HashMap 列表),但我不知道如何将其转换为我可以访问的表单,例如 UserAddress
或 UserPhone
的列表或数组?
我还想知道如何构建此类对象,以便我可以更新用户(尽管我认为问题第一部分的答案可能会让如何构建它们变得显而易见)?
我已经能够更新不涉及此类对象的其他内容,因此一般情况下我不需要阅读和更新方面的帮助,但我现在已经在这些对象上苦苦挣扎了几天,并且可以'搞不懂。谢谢。
最佳答案
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/