解析地图JSON值,然后重新插入地图

时间:2019-08-05 15:54:47

标签: java json parsing hashmap gson

我正在尝试解析地图并更新其中的值... 这是我制作哈希图的.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_enough_paramters”的键,然后获取其值为JSON字符串。

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

之所以这样做,是因为我想让值返回

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

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

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

1 个答案:

答案 0 :(得分:0)

所以我实现了一个解决方案,尽管我不确定这是最干净,最直接的方法。

我仍然从JSON Map中的“ errorMessage”键的值中获得子字符串。

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

然后,我将Json Map转换为字符串。

然后我将新的JSON字符串添加到原始哈希图的值

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;