如何在Java中从对象中获取键和值

3

我想知道如何从JAVA对象中获取KEY和VALUE。

我的对象如下所示:

Object obj = [{ index_a = 1, index_b = 2}, { index_a = 3, index_b = 4}]

我想要获得 index_a,1,index_b,2,…


1
一对列表?如果你试图使用“Object”,那么我建议你做错了。 - Scary Wombat
我应该使用List吗?而不是使用object? - Jay
1
该对象对您没有有用的信息。创建一个反映您拥有的数据的类。 - Scary Wombat
@Jay 列表映射将会做。该对象无效。 - kann
如果只有两个键怎么办?我刚刚编辑了。 - Jay
显示剩余2条评论
2个回答

1

我猜你是从一种松散类型的语言转到Java,该语言中对象作为键值对被访问,通常在运行时定义。例如,json可以直接转换为JS对象,而不需要进行太多的转换。

这并不完全描述Java。Java对象的类型和结构在编译时显式定义,并且预期通过在编译时可用的方法进行访问。对于经验丰富的Java程序员来说,你的问题很困惑,因为在Java中通常不会像访问对象变量作为键和值那样做。

如果你的对象将存储从字符串键到日期值的映射列表(例如),那么通常会在Java中表示为类型变量List<Map<String,Date>>


0

我知道这是一个有点老的问题,但对于那些真正想要一个指导方向的答案的人,您可以按照以下方式做一些事情来获取对象的字段/值:

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;
}

抱歉,太晚看到你的回答了。我解决了这个问题,但你的回答很有帮助。谢谢。 - Jay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接