在实际场景中,我们经常需要记录三方调用日志,当后续遇到问题时好定位与甩锅。
在三方调用中,调用第三方文件上传接口进行文件传输非常常见,对文件上传接口记录日志时,由于 Base64 字符过大,按理说是不应当保存的。
举个例子,对下面的请求报文,docContent
字段存储了文件的 Base64 格式数据:
{
"data": {
"tNo": "1605f4931032022090714473840657",
"files": [
{
"fileCode": "HH03",
"docContent": "超长的文件 Base64 字符超长的文件 Base64 字符超长的文件 Base64 字符超长的文件 Base64 字符 YQIAAAA=",
"fileName": "一个文件",
"fileSuffix": ".pdf"
}
],
"status": "2"
}
}
那么,如何在记录日志时不记录该字段呢?
各位大佬,有什么办法,可以比较方便的将上面的报文清洗为如下格式:
{
"data": {
"tNo": "1605f4931032022090714473840657",
"files": [
{
"fileCode": "HH03",
"fileName": "一个文件",
"fileSuffix": ".pdf"
}
],
"status": "2"
}
}
我知道通过 OGNL 相关工具类可以通过一个表达式取出 JSON 报文的某个字段数据,比如:
public void test(){
// JSON 报文
String json = "上面的示例 json 报文";
// 表达式
String expression = "data.files.fileCode"
// 通过表达式获取 json 报文的某个字段属性
String fileCode = ognlUtils.get(json, expression, String.class);
}
那么,有没有某种工具类也可以通过形如"data.files.fileCode"的表达式去除 JSON 报文的某个字段及值呢?
各位大佬,想请教下~~~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.