gpt4 book ai didi

java - 遍历 Java 中的复杂对象图并获取属性的索引(类似于 xpath)

转载 作者:行者123 更新时间:2023-11-30 07:32:33 24 4
gpt4 key购买 nike

问题陈述:

想象一个如下所示的嵌套对象:

class Company{
...
List<Department> departments;
}

class Department{
...
List<Employee> employees;
}

class Employee{
String name;
...
}

一家公司有很多部门,每个部门又都有很多员工。

Json 主体由库解码,以创建 Java 对象 Company,如上所示。

假设我有一个名为“John”的员工,我正在寻找一个 api,当我传入 Employee 对象的哈希值或属性名称时,它会返回该属性的路径。

search(Object attributeName, Object attributeValue) 即 search("name", "John") 应该返回公司.部门[0].员工[5]

是否有一个好的开源库公开类似的 api,或者什么是遍历复杂对象图的最佳方法

JSR 303 Hibernate Validator 自动将属性路径添加到 ConstraintViolation 中,不会公开如何通过任何对象从复杂对象图中获取属性路径的行为

如果有人有类似的需求,请提供建议

最佳答案

我还没有看到一个库可以完全执行此操作,但您可以修改我的对象迭代器博客中的代码来执行此操作。

https://blog.stackhunter.com/2014/07/09/convert-java-objects-to-string-with-the-iterator-pattern/

迭代器导航对象图以生成如下所示的输出,但您可以让它执行任何操作 - 包括搜索键值对。

com.stackhunter.example.employee.Department@129719f4
deptId = 5775
employeeList = java.util.ArrayList@7037717a
employeeList[0] = com.stackhunter.example.employee.Employee@17a323c0
firstName = Bill
id = 111
lastName = Gates
employeeList[1] = com.stackhunter.example.employee.Employee@57801e5f
firstName = Howard
id = 222
lastName = Schultz
employeeList[2] = com.stackhunter.example.employee.Manager@1c4a1bda
budget = 75000.0
firstName = Jeff
id = 333
lastName = Bezos
name = Sales
[I@39df3255
object[0] = 111
object[1] = 222
object[2] = 333

祝你编码愉快!

关于java - 遍历 Java 中的复杂对象图并获取属性的索引(类似于 xpath),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com