【问题标题】:How to Store a multiple values( during run time) in a map and getting a single value again如何在地图中存储多个值(在运行时)并再次获取单个值
【发布时间】:2020-03-31 00:48:42
【问题描述】:
Iterator searchGetResponseIterator = searchGetResponse.entrySet().iterator();
Object obj = null;
Object dataPicker = null;
while(searchGetResponseIterator.hasNext()) {
    Map.Entry searchGetResponseElement = (Map.Entry)searchGetResponseIterator.next();
    if(searchGetResponseElement.getKey().equals("seSearch")) {
        obj = searchGetResponseElement.getValue();
    }
}

想要将"obj" 存储在地图中。在 obj 我有这个 >>

{"columns":[{"exp":{"$ali":"t2acName"},"ali":"sourceacName"},"**id**":"4c99eedc836adbeefd0e10db76a","**table**":"public.4c99eedc836adbeefd0e10db76a","fieldIds":["0336e7c7-b236-41b7-8ae8-194dcfc49693","369bc4de-b220-41a2-a7be-090c6386aa2e","37926ca2-044f-44f2-a349-0f2e1b61f120","2310dcca-010f-4830-b300-01fb00d2d15e","306554be-92b3-41a3-bb24-b59f4adc8b79","21cdee98-e3b4-4da9-a502-587c0a221413","1f26c177-944f-4378-9e26-8ee0882221cc","13532fa7-8320-4cc1-90fb-aa8fcc3f5f6f","16d3a857-e8d5-4172-87f5-a149187ec409",],"executionQueue":[{"flow":0,"start":1574674632999,"count":0,"rEnd":1574676432999,"status":"done"},{"flow":0,"start":1574620200000,"count":0,"rEnd":1574674632999,"status":"done"}]}

我想再次从表中获取 idtable

【问题讨论】:

  • Map 中存储了什么?字符串还是自定义类实例?
  • 在 map 中,我们以键值形式存储响应体。在其中一个键中,我们得到了这个 obj 中的值所以现在我想获取 id 和 table 值。
  • 您需要使用ObjectMapper 并将此响应字符串转换为地图并获取您的值。

标签: java list dictionary automation runtime


【解决方案1】:

一种更简单的方法是将 Object 字符串转换为地图并获取您的字段。

if(searchGetResponseElement.getKey().equals("seSearch")) {
   obj = searchGetResponseElement.getValue();
   ObjectMapper objectMapper = new ObjectMapper();
   HashMap responseMap = objectMapper.readValue(obj.toString(), HashMap.class);
}

获得responseMap 后,您可以检查该对象并从中获取所需的层次结构。

例如:((Map) ((List) responseMap.get("columns")).get(0)).get("id")

Note:上面的例子可能不能准确地代表你的响应模型。

【讨论】:

  • ObjectMapper类型的readValue(JsonParser, Class)方法不适用于参数(Object, Class)
  • 你可以试试objectMapper.readValue(obj.toString(), HashMap.class) 吗?
  • 请注意,OP 的示例并不是真正有效的 JSON
【解决方案2】:

你知道obj的格式

{"**id**":"4c99eedc836adbeefd0e10db76a","**table**":"public.

看起来 id 出现的位置和 table 出现在字符串/json 的 blob 中的位置一致。

看RegEx java教程,创建一个提取id和table

https://www.baeldung.com/regular-expressions-java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-12
    • 2021-07-25
    • 2021-05-22
    • 2012-06-09
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多