解析Health端点数据获取异常数据
问题:
由于健康节点响应类型是Health类,并且由于需要执行的健康状态类不固定,返回的类型数据的字段不是固定的,所以使用了@JsonAngGetter 注解,照成了解析这个JSON 结构非常不方便。
目标:
解析不太规范的Json数据结构,只获取异常描述信息。
解决方式:
如下示例
package com.zjs.password.health; import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data; import java.util.HashMap;
import java.util.Map; /**
* @author 李文
* @create 2019-05-29 15:53
**/
public class jsonTest
{
@Data
public static class HealthResponse
{
private String status;
private Map<String, HealthData> other = new HashMap<>();
public String getStatus() {
return status;
}
public HealthResponse setStatus(String status) {
this.status = status;
return this;
}
@JsonAnyGetter
public Map<String, HealthData> getOther() {
return other;
}
@JsonAnySetter
public void setOther(String key, HealthData value) {
this.other.put(key, value);
}
} @Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class HealthData
{
String status;
String error;
} public static void main(String[] args) throws Exception {
ObjectMapper o = new ObjectMapper();
String sad = "{\"status\":\"DOWN\",\"custom\":{\"status\":\"UP\"},\"test\":{\"status\":\"UP\"},\"rabbit\":{\"status\":\"UP\",\"version\":\"3.7.7\"},\"db\":{\"status\":\"DOWN\",\"error\":\"MySQL****\"},\"hystrix\":{\"status\":\"UP\"}}";
HealthResponse healthResponse = o.readValue(sad, HealthResponse.class);
StringBuilder builder=new StringBuilder(8);
if (!"UP".equals(healthResponse.getStatus()))
{
for (Map.Entry<String, HealthData> s : healthResponse.getOther().entrySet()) {
if (!"UP".equals(s.getValue().getStatus()))
{
builder.append(s.getKey()).append(" : ").append(s.getValue().getError()).append(" ");
}
}
}
System.out.println(builder.toString());
System.out.println(healthResponse.toString());
}
}
解析Health端点数据获取异常数据的更多相关文章
- 使用Jsoup帮助解析具有html标签的数据和解析网页
下载Jsoup包后导入 /** * Created by YGW on 2016/4/17. * 显示公告的详细内容 */public class PressFragment extends Frag ...
- 基于简单sql语句的sql解析原理及在大数据中的应用
基于简单sql语句的sql解析原理及在大数据中的应用 李万鸿 老百姓呼吁打土豪分田地.共同富裕,总有一天会实现. 全面了解你所不知道的外星人和宇宙真想:http://pan.baidu.com/s/1 ...
- 使用Python解析豆瓣上Json格式数据
现在的API接口多为xml或json,json解析更简洁相对xml来说 以豆瓣的API接口为例,解析返回的json数据: https://api.douban.com/v2/book/1220562 ...
- php 获得汇率(解析页面内容获得指定数据)
首先贴出原文链接:https://jingyan.baidu.com/article/922554465bf115851748f45f.html 方法如下: function getRate($fro ...
- C#解析数组形式的json数据
在学习时遇到把解析json数据的问题,网上也搜了很多资料才得以实现,记录下来以便翻阅. 1. 下载开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/, ...
- 如何清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业
解决方案 用于这个例子中的作业: - 导出作业 SCOTT.EXPDP_20051121 是一个正在运行的 schema 级别的导出作业 - 导出作业 SCOTT.SYS_EXPORT_TABLE_0 ...
- Java 和 Python 解析动态 key 的 JSON 数据
一.概述 解析JSON过程中,什么情况都可能遇到.遇到特殊的情况,不会怎么办?肯定不是设计的问题,一定是你的姿势不对. 有这样一种JSON需要解析: { "b3444533f6544&quo ...
- c# 解析json 字符串 报异常 Bad JSON escape sequence 解决方案
当我试图将一个完整的本地路径的字符串串(如:c:\\aaa\\数学题\\三一班\\ea15ae66-d5cd-4244-87e4-fcf97b06b407.jpg)encodeURL之后当做一个页面参 ...
- Coursera在线学习---第九节(1).异常数据检测(Anomaly Detection)
一.如何构建Anomaly Detection模型? 二.如何评估Anomaly Detection系统? 1)将样本分为6:2:2比例 2)利用交叉验证集计算出F1值,可以用F1值选取概率阈值ξ,选 ...
随机推荐
- MyBatis执行原理图
作者:W&L 推荐: 陶邦仁的博客 (1)加载配置并初始化 触发条件:加载配置文件 配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个M ...
- mysql查询疯狂41例
援引自 http://www.cnblogs.com/wupeiqi/articles/5748496.html 一.表关系请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生 ...
- 关于properties文件的读取(Java/spring/springmvc/springboot)
一.Java读取properties文件 1.基于ClassLoder读取配置文件 注意:该方式只能读取类路径下的配置文件,有局限但是如果配置文件在类路径下比较方便. Properties prope ...
- Semantic 导航条
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- RestTemplate发送GET请求
import org.springframework.web.client.RestTemplate; @Component @Slf4j public class JsSdkUtil { /** * ...
- String类的format方法的用法
public class Test { public static void main(String[] args) { String url = "https://api.weixin.q ...
- jQuery 正则
正则 test 方法验证 var pattern = /^[A-Z]$/; //不需要引号 $('input[name="letter"]').blur(function(){ v ...
- JS 定时器-setInterval、clearInterval、setTimeout
在微信小程序里写的: // pages/splash/splash.js const app = getApp() Page({ data: { remainSecond: }, // 页面渲染完成后 ...
- Mac下Tomcat安装&配置&80默认端口设置
序言: 在学习Tomcat时, 部署虚拟服务主机时,遇到了无响应的情况.原以为是应为Tomcat默认端口8080在调整至(进行端口转发设置)默认端口80会和Mac自带Apache起冲突.但是也有同学使 ...
- MySQL 5.7半同步复制技术
一.复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史. 在2000年,MySQL 3.23.15版本引入了Replication.Replication作为一种准实时同步方式, ...