【问题标题】:Parsing map JSON value and reinserting back into map解析地图 JSON 值并重新插入地图
【发布时间】:2019-12-13 04:26:45
【问题描述】:

我正在尝试解析地图并更新其中的值... 这是我制作的 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_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"}

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

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

【问题讨论】:

  • 首先你不需要将字符串转换为映射只是为了替换一个参数,你可以通过使用字符串.replace()方法和regx来实现。其次不要更新您的原始地图,因为它会覆盖您的异常模板创建原始地图的副本并用新字符串替换您的密钥并返回新地图
  • @RaviTeja 嘿,我实现了一个解决方案并让它工作了......但不确定它是否有效。

标签: java json parsing hashmap gson


【解决方案1】:

所以我实施了一个解决方案,尽管我不确定它是否是最干净和最直接的。

我仍然从 JSON 映射中“errorMessage”键的值中获取子字符串。

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

然后我把Json Map转换成字符串。

然后我将新的 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    相关资源
    最近更新 更多