我正在尝试解析地图并更新其中的值... 这是我制作哈希图的.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字符串中,然后再插入原始映射中。
答案 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;