【问题标题】:How to get value from map [duplicate]如何从地图中获取价值[重复]
【发布时间】:2016-04-04 00:52:52
【问题描述】:

我有一个地图文件

 Map<String,Object> personData = procReadData.execute(in);

数据来自this is

{CUR_GENERIC=[{PROPOSAL_NUMBER=1, TITLE=test proposal, LEAD_UNIT_NAME=University, FULL_NAME=test, STSTUS_CODE=Pending, DOCUMENT_TAKEN_BY=user1 qa, UPDATE_TIMESTAMP=2015-12-28 00:00:00.0, UPDATE_USER=test}]}

如何从该结果中获得PROPOSAL_NUMBER

【问题讨论】:

  • @NathanTuggy:问题似乎不是转换为 JSON,而是使用转换后的对象
  • @P.J.Meisch:除非我弄错了,否则这个骗子也涵盖了这些基础知识。
  • @NathanTuggy:骗子有很多关于不同库的有用信息,这些库可用于以比仅使用 Map 更好的方式转换 JSON。但我们不知道 OP 是否可以更改转换实现 ;-)

标签: java


【解决方案1】:

你应该检查什么类型的结果

personData.get("CUR_GENERIC");

is(如果您没有可用的文档,请为此使用调试器)。它可能是 Map 的列表或数组,具体取决于用于将 JSON 数据转换为 Java 地图的工具。获取此列表或数组的第一个条目,然后使用get("PROPOSAL_NUMBER") 检索您想要的条目。

【讨论】:

  • 当使用 personData.get("CUR_GENERIC");结果是 [{PROPOSAL_NUMBER=1, TITLE=test proposal, LEAD_UNIT_NAME=University, FULL_NAME=test, STSTUS_CODE=Pending, DOCUMENT_TAKEN_BY=user1 qa, UPDATE_TIMESTAMP=2015-12-28 00:00:00.0, UPDATE_USER=test}] 但是当我用 get("PROPOSAL_NUMBER") 结果为空。没有得到数据
  • personData.get()的返回值是什么数据类型?你怎么看结果是什么?您能否将用于提取值的 java 代码添加到您的问题中?
  • 我使用 spring jdbc 模板调用 procedureprocReadData = new SimpleJdbcCall(dataSource).withProcedureName("GET_EPAWS_PERSON_DETAILS") .declareParameters(new SqlParameter("AV_USER_NAME", OracleTypes.VARCHAR)); SqlParameterSource in = new MapSqlParameterSource().addValue("AV_USER_NAME", principal.getName()); Map personData = procReadData.execute(in); logger.debug("|__PersonData=="+personData.get("CUR_GENERIC"));有了这个,我需要得到 PROPOSAL_NUMBER
  • 结果是 [{PROPOSAL_NUMBER=1, TITLE=test proposal, LEAD_UNIT_NAME=University, FULL_NAME=test, STSTUS_CODE=Pending, DOCUMENT_TAKEN_BY=user1 qa, UPDATE_TIMESTAMP=2015-12-28 00:00:00.0 , UPDATE_USER=test}] 有了这个我需要得到 PROPOSAL_NUMBER
  • 你能显示logger.debug(personData.get("CUR_GENERIC").getClass().getCanonicalName());的输出吗?
猜你喜欢
  • 2019-03-25
  • 2022-08-17
  • 1970-01-01
  • 2017-08-18
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
相关资源
最近更新 更多