当前位置: 首页 > 知识库问答 >
问题:

使用LinkedHashMaps从对象获取和修改值

幸鸿轩
2023-03-14

Object valueArray = x.getFieldData().getData().getAdditionalProperties().get("items");
Object value = x.getFieldData().getData().getAdditionalProperties().get("value");
    if(value != null){
        Double result = (Double) value * Double.parseDouble(rule.values.get(0));
        x.getFieldData().getData().getAdditionalProperties().put("value", result);
    }

有什么想法可以解决这个问题吗?谢谢。

共有1个答案

伊羽
2023-03-14

这在某种程度上取决于您的数据是如何记录的。您必须对所有保持安全的东西进行类型化,为此您需要做出一些假设:

if (valueArray instanceof List) {
    @SuppressWarnings("unchecked") // <- need a type in List declaration rather than '?' to allow for List.set, 'Object' being safe
    List<Object> valueList = (List<Object>) valueArray;
    for (int i = 0; i < valueList.size(); i++) {
        Object val = valueList.get(i);
        if (val instanceof Map) {
            @SuppressWarnings("unchecked") // <- you need to be sure that all keys are strings to do that, otherwise use <Object, Object> and typecast again as needed
            Map<String, Object> mVal = (Map<String, Object>) val;
            //Do something with you map, e.g. change some value:
            mVal.put("myprop", "a-value");
        }
        //Or change the value entirely, e.g.:
        valueList.set(i, new LinkedHashMap<String, Object>());
    }
}

注意,instanceof检查还检查null

现在,如果100%保证读取对象始终是java.util.listjava.util.map(linkedHashmapmap的子类)(string类型的键)的java.util.list(arraylist(正如arraylist一样),则可以简化为:

if (valueArray instanceof List) {
    @SuppressWarnings("unchecked") // <- need to be 100% sure of all types involved every time: UNSAFE operation!
    List<Map<String, Object>> valueList = (List<Map<String, Object>>) valueArray;
    for (int i = 0; i < valueList.size(); i++) {
        Map<String, Object> val = valueList.get(i);
        if (val != null) {
            //Do something with you map, e.g. change some value:
            val.put("myprop", "a-value");
        }
        //Or change the value entirely, e.g.:
        valueList.set(i, new LinkedHashMap<String, Object>());
    }
}
 类似资料:
  • 我有一个用例,在这个用例中,我以编程方式启动一个EC2实例,从S3复制一个可执行文件,运行它并关闭实例(在用户数据中完成)。我只需要从S3获取最后添加的文件。 有没有办法使用AWS CLI工具从S3存储桶中获取上次修改的文件/对象?

  • 我试图复制最新的文件基于最后修改从AWS S3文件夹到一个文件夹在同一个桶中,并在复制命令中使用排除和包括。 Folder_Test1: 我必须过滤文件名只有最新的文件和排除复制文件: 我尝试:步骤1复制文件从Folder_Test1到Folder_Test2: 步骤2它将获取最新的文件从Folder_Test2: 如何将最新文件从文件夹_Test2复制到文件夹_Test3?或者如何从文件夹_Te

  • 我有以下数据库结构: 对于如何从April和May键获取对象的值,我有点困惑。使用*ngFor在对象上迭代时。我将所有关键点都作为对象。我试图使用,但不起作用。 完整代码: Html 输出 如上所述,我的数据现在位于下。那么,我如何避免或访问密钥以获取数据呢?是否可以使用?

  • 我试图从我的对象中得到一些东西,但我写的东西不起作用。有什么建议吗?谢谢

  • 问题内容: 我有以下JSON,我需要使用JSONPath获得纯值: 我使用的表达式是,但是我总是得到一个数组: 而不是字符串值()。 问题答案: 但是我总是得到一个数组: 那是必然的。如您在本文档中所读,位于“结果”下(几乎在底部): 请注意,jsonPath的返回值是一个数组,也是一个有效的JSON结构。因此,您可能想再次将jsonPath应用于结果结构,或使用您喜欢的数组方法之一对其进行排序。

  • 我有一个名为AnimalsData的文件,它有一个由数组组成的对象。数组由一个对象和另一个数组组成。它看起来像这样: 我的HTML文件如下所示: 我正试图获取的值的类名对象从动画类数组。我一直在使用以下两个stackoverflow页面作为指南: 访问JSON数组中的对象和访问/处理(嵌套)对象、数组或JSON 我有另一个javascript文件,其中包含以下内容: 编辑我将for in循环中的"