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

解析地图JSON值并重新插入地图

司徒经纶
2023-03-14

我正在尝试解析一个映射并更新其中的值。。。下面是我制作hashmap的.txt文件的内容

第一行是键,JSON字符串是值。

Not_enough_parameters
{"status": false, "errorMessage": "Payload has incorrect amount of parts: expecting: 18, actual:8", "version": "0.97", "coreName": "Patient_Responsibility"}

这是我的解析代码:

parse = params.split("\\|"); 
        String key;
        String value;
        String value2;
        String key2;
        String value3;
        Map<String, String> predictionFeatureMap = mockconfig.getPredictionFeatureMap();

        if(parse.length!=18) {

            key = "Not_enough_parameters";
            value = predictionFeatureMap.get(key);
            Map<?,?> resultJsonObj = new Gson().fromJson(value, Map.class);
            key2 = "errorMessage";
            value2 = (String) resultJsonObj.get(key2);
            value3 = value2.substring(0,61) +parse.length+value2.substring(62);
            }

我正在发送一个名为params的有效负载字符串,该字符串由“|”分隔符分隔。它们的输入必须有18个参数(在“|”分隔符之间有18个值)。我解析输入,如果它没有足够的参数,我会得到包含字符串“not_ough_parameters”的键,然后得到它的值,即JSON字符串。

然后,我使用该JSON字符串并使用Gson创建一个映射。

我这样做是因为我希望返回值

{"status": false, "errorMessage": "Payload has incorrect amount of parts: expecting: 18, actual:(params.length)", "version": "0.97", "coreName": "Patient_Responsibility"}

所以我想更新“实际情况”。我从JSON映射中获取“errorMessage”的值,并使用子字符串获取索引并更改该值以更新用户输入的实际参数量。

我不知道如何将新的JSON重新插入JSON映射中的整个JSON字符串,然后再插入原始映射中。

共有1个答案

濮阳君浩
2023-03-14

因此,我实施了一个解决方案,尽管我不确定它是否最干净、最直接。

我仍然从JSON Map中的“错误消息”键的值中获得了子字符串。

然后,我用新编辑的JSON替换了该键的值。

然后我获取Json映射并将其转换为字符串。

然后,我将新的JSON字符串添加到原始hashmap的值中

String[] parse;
    @PostMapping(value = "/")
    public String payloader(@RequestBody String params ) throws IOException{
        LOGGER.debug("code is hitting");
        String key,key2;
       String value,value2,value3;
        Map<String, String> predictionFeatureMap = mockconfig.getPredictionFeatureMap();
        if(parse.length!=18) {

            key = "Not_enough_parameters";
            value = predictionFeatureMap.get(key);
            Map<String,Object> resultJsonObj = new Gson().fromJson(value, Map.class);
            key2 = "errorMessage";
            value2 = (String) resultJsonObj.get(key2);
            value3 = value2.substring(0,61) +parse.length+value2.substring(62);
            resultJsonObj.replace(key2, value3);
            String updatedResponse = new Gson().toJson(resultJsonObj,Map.class);  
            value = updatedResponse;

            }
        else {
            key = params;
            value = predictionFeatureMap.get(key);
        }
        return value;
 类似资料:
  • 问题内容: 我正在尝试创建字符串到字符串的映射。以下是我尝试过的方法,但两种方法均无效。它出什么问题了? 问题答案: 这里有两个问题。 首先,您不能像其他语言那样使用语法。方括号仅适用于Java中的数组,因此只能与整数索引一起使用。 是正确的,但这是一条语句,因此必须存在于方法块中。在类级别只能存在字段声明。这是一个示例,其中所有内容都在方法的本地范围内: 如果要将映射初始化为类的静态字段,则可以

  • insertImage(int $row, int $column, string $localImagePath[, double $widthScale, double $heightScale]) int $row $excel = new \Vtiful\Kernel\Excel($config); ​ $freeFile = $excel->fileName("free.xlsx");

  • 问题内容: 我有以下程序,其中我需要使用以下结构来解析yaml: https://codebeautify.org/yaml- validator/cbabd352 这是 有效的Yaml ,我使用字节使​​其更简单,也许缩进在复制粘贴到问题的过程中已更改,但您可以在链接中看到yaml有效 YAML的有API_VERSION和亚军,每个转轮(关键是名字),我已经命令的列表,我需要打印这些命令和,我究

  • 问题内容: 我有一个非常简单的JSON文件,类似这样,但是有成千上万个字符串: 我想把水果装入一个 最好的方法是什么?有没有一种方法我不需要遍历每个元素并使用循环插入到地图中? 问题答案: 这是示例,您可以在没有任何结构的情况下解组字符串列表。 或者可以使用字符串列表代替字符串列表

  • 我使用的谷歌地图api如下: 这需要拉特和lng,地图画得很好,但是当新的拉特 我想在不重新绘制地图的情况下更新地图上的标记。

  • 问题内容: 拥有下一张原始地图: 在G1,G2和G3是不同年龄段的人群时,如何创建这样的新地图: 新密钥是每个组中的最大年龄。 我已经试过了: 但是编译器对我说:在这段代码中,“此表达式的目标类型必须是函数接口”: 任何帮助,将不胜感激。 问题答案: toMap使用和的功能。您在代码中正确地执行了此操作,但是对于,您却没有正确执行此操作,因此您需要包含以下函数: 注意 。 此外,由于您不使用地图键