我想知道如何从JAVA对象中获取KEY和VALUE。
我的对象如下所示:
Object obj = [{ index_a = 1, index_b = 2}, { index_a = 3, index_b = 4}]
我想要获得 index_a,1,index_b,2,…
我想知道如何从JAVA对象中获取KEY和VALUE。
我的对象如下所示:
Object obj = [{ index_a = 1, index_b = 2}, { index_a = 3, index_b = 4}]
我想要获得 index_a,1,index_b,2,…
我猜你是从一种松散类型的语言转到Java,该语言中对象作为键值对被访问,通常在运行时定义。例如,json可以直接转换为JS对象,而不需要进行太多的转换。
这并不完全描述Java。Java对象的类型和结构在编译时显式定义,并且预期通过在编译时可用的方法进行访问。对于经验丰富的Java程序员来说,你的问题很困惑,因为在Java中通常不会像访问对象变量作为键和值那样做。
如果你的对象将存储从字符串键到日期值的映射列表(例如),那么通常会在Java中表示为类型变量List<Map<String,Date>>
。
我知道这是一个有点老的问题,但对于那些真正想要一个指导方向的答案的人,您可以按照以下方式做一些事情来获取对象的字段/值:
import java.lang.reflect.Field;
public String getObjectFields(obj) {
// See:
// - https://dev59.com/QWYr5IYBdhLWcg3wxNC8
// - https://www.geeksforgeeks.org/reflection-in-java
// - https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getDeclaredField-java.lang.String-
Class<?> objClass = obj.getClass();
Field[] objFields = objClass.getDeclaredFields();
Map<String, String> entriesMap = new HashMap<>();
for (Field field : objFields) {
String fieldSuffix = field.toString().replaceAll("(^.*)(\\.)([^\\.]+)\$", "\$3");
field.setAccessible(true);
entriesMap.put(fieldSuffix, field.get(obj));
}
return entriesMap;
}