異常なデータを取得健康エンドポイントデータの解析

問題:

  応答タイプは、健康保健ノードクラスによるもので、このクラスは、構造を解析するJSONなど@JsonAngGetter注釈の使用は、非常に不便になったので、データフィールドの戻り値の型は、固定されていない健康状態が固定されていないため、ために実行する必要があります。

目標:

  分析データ構造JSONは標準化され、情報が唯一の例外の説明を取得していません。

ソリューション:

  次の例

パッケージcom.zjs.password.health。

輸入com.fasterxml.jackson.annotation.JsonAnyGetter。
輸入com.fasterxml.jackson.annotation.JsonAnySetter。
輸入com.fasterxml.jackson.annotation.JsonIgnoreProperties。
輸入com.fasterxml.jackson.databind.ObjectMapper。
輸入lombok.Data。

輸入java.util.HashMapを;
輸入java.util.Map; 

/ ** 
 * @author 李文
 * @Create 2019年5月29日午後03時53分
 * * / 
パブリック クラスjsonTest 
{ 
    @Data 
    パブリック 静的 クラス HealthResponse
    { 
        プライベート文字列の状態。
        プライベート地図<文字列、HealthData>その他= 新しい HashMapの<> ();
        パブリック文字列のgetStatus(){
             リターン・ステータス、
        } 
        公共HealthResponseのsetStatus(文字列状態){
             この .status = ステータス。
            返す これを
        } 
        @JsonAnyGetter 
        パブリックマップの<string、HealthData> getOther(){
             戻りその他; 
        } 
        @JsonAnySetter 
        公共 のボイドsetOther(文字列キー、HealthData値){
             この.other.put(キー、値)。
        } 
    } 

    @Data 
    @JsonIgnoreProperties(ignoreUnknown = パブリック 静的 クラスHealthData 
    { 
        文字列のステータス。
        文字列のエラー。
    } 

    パブリック 静的 ボイドメイン(文字列[]引数)スロー例外{ 
        ObjectMapper O = 新しいObjectMapperを(); 
        悲しい文字列= "{\"ステータス\ ":\" DOWN \ "\ "カスタム\ UP \: "\ ""}、\ "テスト\"{\"ステータス\":{\ "ステータス\":\" UP \ "}、\"ウサギ\ ":{\"ステータス\ ":\" UP \ "\ "バージョン\":\ "3.7.7 \"}、\ "DB \":{\"ステータス\ MySQLの****:\ "\ ""}、\ "hystrixの\":{\ "ステータス\":\ "エラー\ "\": "\" DOWN \ UP \"}}" 
        HealthResponse healthResponse = o.readValue(悲しい、HealthResponse。クラス)。
        StringBuilderビルダー = 新しい StringBuilderの(8 );
        もし(! "UP" .equals(healthResponse.getStatus()))
        { 
            のため(のMap.Entry <
                {
                    builder.append(s.getKey())(追記。 ": ").append(""アペンド(s.getValue()getError()。)。 )。
                } 
            } 
        } 
        のSystem.out.println(builder.toString())。
        System.out.println(healthResponse.toString())。
    } 
}

 

おすすめ

転載: www.cnblogs.com/atliwen/p/10944526.html