需要修改的报文当你拿到的报文是这样的
{ "input": { "sdfsn": "23u4209350-2", "fsfs": "128412094", "sgsgsg": "15821059", "inssgsuplc_admdfdfdvs": "125125332", "dgh": "125215312", "dfgdfg": "215215", "sdhdsh": "", "sdfsn": "", "shdfshdshdsh": "shsdh", "sdhdsh": "shsh.0", "shsdhsd": "1", "shsdh": "1607", "input": { "data": { "dhfsdhsd": "235325", "shsdhsdh": "03", "dgd": "be0445360", "dfhfdh": "11", "dshshsd": 76.56, "ghjrfgj": "01", "grjf": "234623626", "hjfd": "236436", "djfdfgjdfj": "45634", "exp_content": "{"gdsg":"01","gjfj":"658568","fjfj":"5675467","ghfjfgkj":"68568","vmgfvj":"658568","gfhjgfyk":"0","fghkfghkg":"5474567"}", "dfjgdfj": "", "dfjdfjgdfj": "56745745", "dfgjdfgjh": 45756758, "jdfgjhfdgj": 0, } } }, "output": { "output": { "r757": { "dhfsdhsd": "235325", "shsdhsdh": "03", "dgd": "be0445360", "dfhfdh": "11", "dshshsd": 76.56, "ghjrfgj": "01", "grjf": "234623626", "hjfd": "236436", "djfdfgjdfj": "45634", "exp_content": "", "dfjgdfj": "", "dfjdfjgdfj": "56745745", "dfgjdfgjh": 45756758, "jdfgjhfdgj": 0, }, "sdfgsdfg": [ { "sgasgag": "4673476", "agasgdas": 5675467, "asgasgasg": "", "asdgasgas": 4567456754, "dhsdsxchsdh": 54675467, "sdfhsdhsdh": "5674756457" } ] }, "erherth": 0, }}
这一看就知道上边的报文在postman里边肯定会报错,因为exp_content,因此他又没有用到,所以你想把他删掉。其实也没那么难删
也就是用到了流转字符串。字符串固定字符查找,然后进行字符串转字符流,删掉字符流中固定字符,之后再转回来。因为字符串已经是final了所以很多用法都是使用字符串转字符流实现的
实现代码如下 private jsonobject resolveapplicationjson(httpservletrequest request) { inputstream is = null; string json = null; try { is = request.getinputstream(); json = ioutils.tostring(is, "utf-8"); json=json.replaceall("\\r|\n|\t",""); int index= json.indexof("exp_content"); int indexfirst=json.indexof("{", index); int indexlast=json.indexof("}",index); if (index!=-1 && indexlast !=-1 &&indexfirst !=-1) { stringbuffer stringbuffer = new stringbuffer(json); stringbuffer.delete(indexfirst,indexlast+1); json=stringbuffer.tostring();} } catch (ioexception e) { throw new runtimeexception("cannot get reader from request!", e); } finally { if (is != null) { try { is.close(); } catch (ioexception e) { e.printstacktrace(); } } } try { return new jsonobject(json); } catch (jsonexception e) { throw new runtimeexception("canot convet json:[" + json + "] to jsonobject!", e); } }
多存在多个不符合规定的数据然后你要删掉怎么操作呢?当你拿到的报文是这样的。
{ "input": { "sdfsn": "23u4209350-2", "fsfs": "128412094", "sgsgsg": "15821059", "inssgsuplc_admdfdfdvs": "125125332", "dgh": "125215312", "dfgdfg": "215215", "sdhdsh": "", "sdfsn": "", "shdfshdshdsh": "shsdh", "sdhdsh": "shsh.0", "shsdhsd": "1", "shsdh": "1607", "input": { "data": { "dhfsdhsd": "235325", "shsdhsdh": "03", "dgd": "be0445360", "dfhfdh": "11", "dshshsd": 76.56, "ghjrfgj": "01", "grjf": "234623626", "hjfd": "236436", "djfdfgjdfj": "45634", "exp_content": "{"gdsg":"01","gjfj":"658568","fjfj":"5675467","ghfjfgkj":"68568","vmgfvj":"658568","gfhjgfyk":"0","fghkfghkg":"5474567"}", "dfjgdfj": "", "dfjdfjgdfj": "56745745", "dfgjdfgjh": 45756758, "jdfgjhfdgj": 0, } } }, "output": { "output": { "r757": { "dhfsdhsd": "235325", "shsdhsdh": "03", "dgd": "be0445360", "exp_content": "{"gdsg":"01","gjfj":"658568","fjfj":"5675467","ghfjfgkj":"68568","vmgfvj":"658568","gfhjgfyk":"0","fghkfghkg":"5474567"}", "dfhfdh": "11", "dshshsd": 76.56, "ghjrfgj": "01", "grjf": "234623626", "hjfd": "236436", "djfdfgjdfj": "45634", "exp_content": "{"gdsg":"01","gjfj":"658568","fjfj":"5675467","ghfjfgkj":"68568","vmgfvj":"658568","gfhjgfyk":"0","fghkfghkg":"5474567"}", "dfjgdfj": "", "dfjdfjgdfj": "56745745", "dfgjdfgjh": 45756758, "jdfgjhfdgj": 0, }, "sdfgsdfg": [ { "sgasgag": "4673476", "agasgdas": 5675467, "asgasgasg": "", "asdgasgas": 4567456754, "dhsdsxchsdh": 54675467, "sdfhsdhsdh": "5674756457" } ] }, "erherth": 0, }}
解决方式如下:根据需要写出正则表达式,再使用正则看看有几个这样的不需要的符号,然后循环遍历几次,之后找到这部分,最后删除掉。
实现代码如下# 全局变量private static string regex = "exp_[c,c]ontent";# 方式方法pattern p = pattern.compile(regex); // 获取 matcher 对象 matcher m = p.matcher(json); list<integer> list = new arraylist(); while(m.find()){ list.add(m.start()); } int index=0; int indexfirst=0; int indexlast=0; for (int j = 0; j < list.size(); j++) { index=json.indexof("exp_",indexlast); indexfirst=json.indexof("{", index); indexlast=json.indexof("}",index); stringbuffer stringbuffer =null; if (indexlast !=-1 &&indexfirst !=-1) { stringbuffer = new stringbuffer(json); stringbuffer.delete(indexfirst,indexlast+1); } json=stringbuffer.tostring(); }
以上就是java怎么删除字符串固定下标字串的详细内容。