在使用webhook告警的过程中,发现json解析不了。分析后,确认是反斜杠
\
导致的。
json 文件
source.json
{"mailto":["xxx@xxx.com"], "subject":"系统异常汇总", "content":"在 Tools.WebRequestHelper.Submit() 位置 e:\IscnSolu"}
去掉反斜杠,保存为change.json
{"mailto":["xxx@xxx.com"], "subject":"系统异常汇总", "content":"在 Tools.WebRequestHelper.Submit() 位置 e:IscnSolu"}
解析:
[root@VM-99-12-centos ~]# cat source.json |jq
parse error: Invalid escape at line 1, column 139
[root@VM-99-12-centos ~]# cat change.json |jq
{
"mailto": [
"yinwenbin@rhassurance.com"
],
"subject": "系统异常汇总",
"content": "在 Tools.WebRequestHelper.Submit() 位置 e:IscnSolu"
}
解决办法
暂无
- 前端处理掉反斜杠
kibana watcher 处理
"source": "List buckets = ctx.payload.aggregations.error_groups.buckets; for (int i = 0; i < buckets.length; i++) { List exception = buckets[i].sample.hits.hits[0]._source.error.exception; if (exception != null && exception.length > 0) { exception[0].message = exception[0].message.replace('\\\\', '\\\\\\\\').replace('\"', '\\\\\"').replace('<', '<').replaceAll(/[\\u0000-\\u001F\\u007F]/, m->''); }} return ctx.payload;",
可阅读格式:
"source":
"
List buckets = ctx.payload.aggregations.error_groups.buckets;
for (int i = 0; i < buckets.length; i++)
{ List exception = buckets[i].sample.hits.hits[0]._source.error.exception;
if (exception != null && exception.length > 0)
{ exception[0].message = exception[0].message.replace('\\\\', '\\\\\\\\').replace('\"', '\\\\\"').replace('<', '<').replaceAll(/[\\u0000-\\u001F\\u007F]/, m->'');
}
}
return ctx.payload;
"
- 后端解析反斜杠
网友评论