【问题标题】:Get value from object by key in java在java中通过key从对象中获取值
【发布时间】:2019-01-30 12:07:07
【问题描述】:

我在entityManager.find 方法的响应中得到对象。 我想通过传递键从该对象中获取值。但我没有得到任何成功。

例如:-

我的实体:-

@entity
class Test (){
public Long id;
public String name ;
public String descr;
}

我在以下代码的响应中得到对象。

`Object obj=`entitymanager.find(classname,id);

注意:- 我不能直接使用实体的对象而不是对象,因为输入类名可以动态传递,这就是我在 Object 中进行响应的原因。

现在我想通过传递键从对象中获取值 类似obj.getvalue("id");

我尝试了以下方法来完成它:-

  1. Map<String, Object> user = (Map<String, Object>)obj;
  2. 使用json简单解析器解析。

    JSONParser parser = new JSONParser();

    JSONObject jsonObject =parser.parse(obj.toString());

但没有获得任何成功。

请帮帮我。

【问题讨论】:

  • 你不能将对象转换为它的实际类吗?由于您提供了类名,因此您应该知道可以投射到哪个类。
  • @Sebastian 我提到'Test'实体只是为了示例,我可以在 find 方法中动态传递类名,这就是我有超过 100 个实体的问题,我可以动态传递实体名称
  • 如果动态传递类名,怎么知道返回的对象是否有想要的字段?
  • @Sebastian 在按键获取值之前,首先我使用 REFLECTION api 获取所有字段列表,然后传递这些字段。感谢您的反馈 :) 我能够通过使用反射和对象映射器解决该问题。

标签: java json reflection entitymanager jsonparser


【解决方案1】:

我有点不确定你在问什么......但只要“name”是你可以调用的主键

Test obj = entitymanager.find(Test.class, name);

【讨论】:

  • 我在 find 方法中动态传递实体名称,我的项目中有 100 多个实体,我将实体名称作为输入并在 FIND 方法中传递该实体名称。这就是为什么我想从 Object 访问值
  • 编辑答案。 .
  • 感谢您的回复。我认为你没有正确理解我的问题。我可以使用 objectmapper 解决我的问题
【解决方案2】:

Object obj=entitymanager.find(classname,id);

在上面的行中,“类名”的类型是什么。 由于您的问题没有提及类型。我假设它的类型是 Object。 你应该做类似的事情

Object obj=entitymanager.find(classname.getClass(),id);

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多