解析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值选取概率阈值ξ,选 ...
随机推荐
- flutter TextField 输入框被软键盘挡住的解决方案
以前搞ionic1~4的开发中 和react-native flutter中的机制完全不同, 在flutter 中 当前页面如果存在元素被软键盘挡住 的情况 页面元素的最外层肯定得嵌套一层 S ...
- C# WebClient 的文件上传下载
上传文件 string path = openFileDialog1.FileName; WebClient wc = new WebClient(); wc.Credentials = Creden ...
- quartz (从原理到应用)详解篇(转)
一.Quartz 基本介绍 1.1 Quartz 概述 1.2 Quartz特点 1.3 Quartz 集群配置 二.Quartz 原理及流程 2.1 quartz基本原理 2.2 quartz启动流 ...
- Python2.x与3.x版本区别Ⅲ
八进制字面量表示 八进制数必须写成0o777,原来的形式0777不能用了:二进制必须写成0b111. 新增了一个bin()函数用于将一个整https://www.xuanhe.net/数转换成二进制字 ...
- 宽字符(UNICODE)字符集
推荐使用宽字符(UNICODE)字符集,严格使用宽字符集的函数和定义.具体参考https://blog.csdn.net/qq_22642239/article/details/84822485
- Linux操作大全
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...
- DataTable转List,DataTable转为Model对象帮助类
DataTable转List,DataTable转为Model对象帮助类 public class ModelConvertHelper<T> where T : new() { publ ...
- [Linux]虚拟机无法安装deepin15.9的解决方案
虚拟机deepin15.9无法安装 sda assuming drive cache write through 显示内存不行,重启仍然无法安装 解决方案: 选择全盘安装方式 如果有全屏问题,需安装v ...
- PHP Storm Built In Server Doesn't Recognize mod_rewrite
http://stackoverflow.com/questions/22139032/php-storm-built-in-server-doesnt-recognize-mod-rewrite 版 ...
- Java虚拟机与平台无关性
概述 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. --<深入理解Java虚拟机>(从这里可以看到,字节码是一种文件格式) 我们都知道计算机只 ...