Wenn Java die JSON -Zeichenfolge durchquert und den entsprechenden KV -Wert erhält, werden verschiedene Probleme verursacht, z. Fairy durch Alibabas Fastjson können Sie leicht STR in JsonArray konvertieren, dann das Objekt darin zu JsonObject zwingen und dann den Wert durch obj.getInteger ("key") und obj.getString ("key") erhalten.
JsonArray json = (jsonArray) jsonArray.Parse (str); für (Objekt obj: json) {jsonObject jo = (jsonObject) obj; int status = jo.getInteger ("Status"); String message = jo.getString ("message"); System.out.println ("Status ---" + Status + "--- meldung ---" + meldung);}1. Wenn es in der JSON -Zeichenfolge Arrays und Kartenobjekte gibt, durchqueren Sie die Daten und das Datenformat lautet wie folgt:
[ { "status":0, "tags":[ "check:ntp" ], "timestamp":1492151922.198, "check":"datadog.agent.check_status", "host_name":"song-2", "message":null, "id":2 }, { "status":0, "tags":null, "Zeitstempel": 1492151922.2325, "Check": "datadog.agent.up", "Host_name": "Song-2", "Nachricht": Null, "ID": 5}]Wenn Sie die oben genannten JSON -String -Daten analysieren, lautet die Parsing -Methode wie folgt:
Methode 1
/** * In den Hostdetails wird der Status und die Meldung der Ausnahmefehlermeldung der Plattformdienste und der Ausnahmemeldung über einen Fehler berichtet. JsonArray.Parse (str); Karte <String, Objekt> objmap = null; Karte <String, String> resmap = null; für (Objekt obj: json) {objmap = obj2map (obj); @SuppressWarnings ("deaktiviert") map <String, Objekt> mobj = (map <string, object>) objmap.get ("map"); int status = (Integer) mobj.get ("Status"); if (Status! = 0) {resmap = new HashMap <String, String> (); Switch (Status) {Fall 1: resmap.put ("Status", "Warnung"); brechen; Fall 2: resmap.put ("Status", "Fehler"); brechen; Fall 3: RESMAP.PUT ("Status", "Crit"); brechen; Standard: Break; } resmap.put ("serviceName", ((String) mobj.get ("prüft"). Split ("//.") [0]); resmap.put ("msg", (string) mobj.get ("message")); mlist.add (RESMAP); }} return mlist; } / ** * Object to map * @param obj * @return * @throws Exception * / public map <String, Objekt> obj2map (Object OBJ) löst eine Ausnahme aus {if (obj == null) {return null; } Map <string, object> map = new HashMap <String, Object> (); Field [] fields = obj.getClass (). GetDeclaredfields (); für (Feldfeld: Felder) {field.setAccessible (true); map.put (field.getName (), field.get (obj)); } Rückgabekarte; }Methode 2
/** * In den Hostdetails wird der Status und die Meldung der Ausnahmefehlermeldung der Plattformdienste und der Ausnahmemeldung über einen Fehler berichtet. JsonArray.Parse (str); Karte <String, String> resmap = null; für (Objekt obj: JSON) {JSONObject jo = (jsonObject) obj; int status = jo.getInteger ("Status"); if (Status! = 0) {resmap = new HashMap <String, String> (); Switch (Status) {Fall 1: resmap.put ("Status", "Warnung"); brechen; Fall 2: resmap.put ("Status", "Fehler"); brechen; Fall 3: RESMAP.PUT ("Status", "Crit"); brechen; Standard: Break; } resmap.put ("serviceName", (jo.getString ("check")). split ("//.") [0]); resmap.put ("msg", jo.getString ("message")); mlist.add (RESMAP); }} return mlist; }2. Wenn ein Array ein Array in einer JSON -Zeichenfolge enthält, iteriert die Daten und das Datenformat lautet wie folgt:
[["Haproxy", "Haproxy", 0, "Fehler", "swdfghyjuikl", {}], ["Gearmand", "Gearmand", 0, "Fehler", "fand keine gültigen Verbindungen in der Liste: [<GearmanconNction Localhost: 4730 Connected = False>]] ']'] '".Methode 1
/** * Ausnahmeinformationen erhalten, indem Sie AgentChecksstr abfragen. das Ausnahmebestand Meldungsfehler Objekt jsonArray = jsonArray.Parse (AgentChecksStr); @SuppressWarnings ("Deaktiviert") Liste <list <object >> list = (list <list <objekt >>) JSONArray; Karte <String, String> map = null; für (int i = 0; i <list.size (); i ++) {map = new HashMap <String, String> (); String status = list.get (i) .get (3) .ToString (); if (! status.equals ("ok")) {String serviceName = list.get (i) .get (0) .toString (); String msg = list.get (i) .get (4) .ToString (); map.put ("serviceName", serviceName); map.put ("Status", Status); map.put ("msg", mlist.add (map);}} return mlist;}Methode 2
/** * Ausnahmeinformationen erhalten, indem Sie AgentCheCKSStr abfragen JsonArray jsonArray = (jsonArray) jsonarray.parse (AgentChecksstr); Karte <String, String> map = null; für (Objekt obj: jsonArray) {map = new HashMap <String, String> (); JsonArray ja = (jsonArray) obj; String status = ja.getString (3); if (! status.equals ("ok")) {String serviceName = ja.getString (0); String msg = ja.getString (4); map.put ("serviceName", serviceName); map.put ("Status", Status); map.put ("msg", mlist.add (map);}} return mlist;}GSON wandelt JSON -Saiten in JSON -Objekte um:
import com.google.gson.gson; import com.google.gson.jsonarray; import com.google.gson.jsonelement; import com.google.gson "{/" alarmdetails/": {/" conditionDetails/": {/" alarmid/": 7,/" alarmnodatanotifytime/": 1,/" alarmnowserieswaittime/": 2},// "ConditionStatic/": {/"alarmid/": 7,/"ConditionAggregate/":/"avg/",/"Conditionoperator/": 1,/"ConditionThresholdtime/": 5,/"ConditionThresholdValue/":/"123/"},/"metricdetails/": {/"alarmid/": 7,/"metricaggregater/":/"avg/",/"metricby/":/" "Host/",/"metricexcludetag/":/"host: paas-177/",/"metricname/":/"system.cpu.user/",/"metricq/":/"avg: system.cpu.user { #Address: Wuhan,! Host: paas-177} von {host}/",/" metrictag/":/"#adresse: wuhan/"},/" notify/": [{/" alarmid/": 7,/" notifychann EL/": 5,/" NotifyUserid/": 1}, {/" alarmid/": 7,/" NotifyChannel/": 5,/" NotifyUserid/": 2}],/" Ansicht/": {/" alarmpression/":/" a vg (last_5m) avg: system.cpu.user {#address: wuhan,! host: paaS-177} von {host}> 123.0/",/" alarmid/": 7,/" alarmLastValue/":/" up /",/" alarmname/":/" static_metric/",/" alarmStatus/": 1,/" alarmTepe/": 2,/" alarmTyPejoin/": 3,/" createtime/":/" 2017-06-28 17: 25: 52.0/",/" createUserid/": 1,/" isdisable/": false,/" lastalarmtime/":/" 2017-06-28 17: 25: 27.0/",/" metricname/":/" System.cpu.user/",/" metrictag/":/"#Adresse: Wuhan/",/" UpdateTime/":/" 2017-06-29 15: 49: 18.0/"}},/" alarmid/": 7,/" Allmark/": {/" avg: system.cpu.user {host: cfeng-4,#adresse: wuhan ,! Host: PAAS-177}/": {/" Changeputtime/": true,/" lastputTSdbTime/": 1499655343,/" doughsuccesschecktime /" "TagMap/": {/"host/":/"cfeng-4/",/"#address/":/"wuhan/",/"host/":/"paas-177/"}}},/"JoinType/": 3,/"useMetricUnit/":/"percent/",/"validataDetails/":{/"status/":0,/"validataMerges/":[{/"alarmMarkDto/":{/"changePutTime/":true,/"lastPutTsdbTime/":1499655343,/"lastSuccessCheckTime/":1499 655349,/"Serie/":/"AVG: System.cpu.User {Host: CFENG-4,#Adresse: Wuhan,! Host: Paas-177}/",/"Tagmap /": {/" host/":/" cfeng-4/",/"#address/":/" wuhan/",/"! host/":/" paas-177/"}},/" status/": 0,/" tag/":: /"Host: CFENG-4/",/"validatanodata/": {/"currentime/": 1499655349,/"isnodata/": false,/"lastsucc EssCheckTime/": 1499655349,/" Serie/":/" AVG: System.cpu.User {Host: CFENG-4,#Adresse: Wuhan,! Host: p AAS-177}/",/" tag/": {/" host/":/" cfeng-4/",/"#adresse/":/" wuhan/",/" host/":/" paas-177/"},/" three sholdtime/": 60},/" validatastatic/": {/" convertOthresholdValue/": 123.0,/" Ende/": 1499655343,/" Inte rvalaggregator/":/" avg/",/" iSalart/": true,/" operator/": 1,/" Serie/":/" avg: system.cpu.user {host : cfeng-4,#Adresse: Wuhan,! Host: Paas-177}/",/" start/": 1499655043,/" sysunit/":/" Prozent/",/" tag/"" " : {/"#Adresse/":/"wuhan/",/"host/":/"cfeng-4/",/"host/":/"paas-177/"},/"Thresholdtime/": 300,/" thresholdValue/":/" 123/",/" value/": 5.715769243240357}}],/" validatimeSeconds/": 1499655349}}"; String jSONSONT1 = "{/" alarmdetails/": {/" conditionDetails/": {/" alarmid/": 7,/" alarmnodatanotifytime/": 1,/" alarmnowserieswaittime/": 2},// "ConditionStatic/": {/"alarmid/": 7,/"ConditionAggregate/":/"avg/",/"Conditionoperator/": 1,/"ConditionThresholdtime/": 5,/"ConditionThresholdValue/":/"123/"},/"metricdetails/": {/"alarmid/": 7,/"metricaggregater/":/"avg/",/"metricby/":/" "Host/",/"metricexcludetag/":/"host: paas-177/",/"metricname/":/"system.cpu.user/",/"metricq/":/"avg: system.cpu.user { #Address: Wuhan,! Host: paas-177} von {host}/",/" metrictag/":/"#adresse: wuhan/"},/" notify/": [{/" alarmid/": 7,/" notifychann EL/": 5,/" NotifyUserid/": 1}, {/" alarmid/": 7,/" NotifyChannel/": 5,/" NotifyUserid/": 2}],/" Ansicht/": {/" alarmpression/":/" a vg (last_5m) avg: system.cpu.user {#address: wuhan,! host: paaS-177} von {host}> 123.0/",/" alarmid/": 7,/" alarmLastValue/":/" up /",/" alarmname/":/" static_metric/",/" alarmStatus/": 1,/" alarmTepe/": 2,/" alarmTyPejoin/": 3,/" createtime/":/" 2017-06-28 17: 25: 52.0/",/" createUserid/": 1,/" isdisable/": false,/" lastalarmtime/":/" 2017-06-28 17: 25: 27.0/",/" metricname/":/" System.cpu.user/",/" metrictag/":/"#Adresse: Wuhan/",/" UpdateTime/":/" 2017-06-29 15: 49: 18.0/"}},/" alarmid/": 7,/" Allmark/": {/" avg: system.cpu.user {host: cfeng-4,#adresse: wuhan ,! Host: PAAS-177}/": {/" Changeputtime/": true,/" lastputTSdbTime/": 1499655374,/" doughsuccesschecktime /" "TagMap/": {/"host/":/"cfeng-4/",/"#address/":/"wuhan/",/"host/":/"paas-177/"}}},/"JoinType/": 3,/"useMetricUnit/":/"percent/",/"validataDetails/":{/"status/":0,/"validataMerges/":[{/"alarmMarkDto/":{/"changePutTime/":true,/"lastPutTsdbTime/":1499655374,/"lastSuccessCheckTime/":1499 655379,/"Serie/":/"AVG: System.cpu.User {Host: CFENG-4,#Adresse: Wuhan,! Host: Paas-177}/",/"Tagmap /": {/" host/":/" cfeng-4/",/"#address/":/" wuhan/",/"! host/":/" paas-177/"}},/" status/": 0,/" tag/":: /"Host: CFENG-4/",/"validatanodata/": {/"currentime/": 1499655379,/"isnodata/": false,/"lastSucc EssChecktime/": 1499655379,/" Serie/":/" AVG: System.cpu.User {Host: CFENG-4,#Adresse: Wuhan,! Host: p AAS-177}/",/" tag/": {/" host/":/" cfeng-4/",/"#adresse/":/" wuhan/",/" host/":/" paas-177/"},/" three sholdtime/": 60},/" validatastatic/": {/" convertOthresholdValue/": 123.0,/" Ende/": 1499655374,/" Inte rvalaggregator/":/" avg/",/" iSalart/": true,/" operator/": 1,/" Serie/":/" avg: system.cpu.user {host : cfeng-4,#Adresse: Wuhan,! Host: Paas-177}/",/" start/": 1499655074,/" sysunit/":/" prozent/",/" tag/"" " : {/"#Adresse/":/"wuhan/",/"host/":/"cfeng-4/",/"host/":/"paas-177/"},/"Thresholdtime/": 300,/" thresholdValue/":/" 123/",/" value/": 5.089640821729388}}],/" validatTimeSeconds/": 1499655379}}"; Set <string> set = new Hashset <string> (); set.add (j 2ns); set.Add (JSONSON1); Gson gs = new gson (); Liste <Object> eventlist = new ArrayList <Object> (); für (string str: set) {jsonObject returnData = new JsonParser (). Parse (str) .getasjsonObject (); JsonObject ad = returnData.get ("alarmdetails"). GetasjsonObject (); JsonObject vd = returnData.get ("validatadetails"). GetasjsonObject (); JsonArray vm = vd.get ("validatamergen"). GetasjsonArray (); JsonArray nf = ad.get ("benachrichtigen"). GetasjsonArray (); JsonObject v = ad.get ("Ansicht"). GetasjsonObject (); String validatImeSeconds = vd.get ("validatImeSeconds"). ToString (); für (jsonelement JE: vm) {Je.getasjsonObject (). add ("Ansicht", v); Je.GetasjsonObject (). add ("Benachrichtigung", NF); Je.GetasjsonObject (). AddProperty ("validatimeSeconds", Long.Parselong (validatimeSeconds)); EventList.Add (JE); }} für (Object OBJ: Eventlist) {String inparam = gs.tojson (obj); System.out.println (Inparam); } System.out.println (gs.tojson (EventList)); }} // Geräteinformationen abrufen (nur Hardware -Geräte und virtuelle Geräte haben sie) Hashmap <String, String> parammap = new Hashmap <String, String> (); Parammap.put ("hostID", mhostid); parammap.put ("ptype", dto.getPtype (); dto.gettypeflag ()); parammap.put ("api_key", apikey); String ressstr = httputils.get (Device_info_url, parammap); restore = jobj.get ("result"). toString (); DeviceInfodto DeviceInfodto = new GSON (). Fromjson (rest, DeviceInfodto.class); dto.setDeviceInfo (DeviceInfodo);};}; Liste <map <Integer, lang >> result = new ArrayList <map <Integer, long >> (); Map <String, String> Timemap = null; Liste <map <String, String >> TimeArr = new ArrayList <map <String, String >> (); für (int j = 0; j <result.size (); j ++) {Timemap = new HashMap <String, String> (); if (j == result.size () - 1) {Timemap.put ("starttime", result.get (j) .get (result.get (j) .Keyset (). iterator (). next ()) + ""); Timemap.put ("Endtime", System.currentTimemillis () + "");} else {Timemap.put ("startTime", result.get (j) .get (result.get (j) .Keyset (). iterator (). Next ()) + ""); timeMap.put("endTime", (result.get(j+1).get(result.get(j+1).keySet().iterator().next()) - 1) + "");}timeMap.put("hostName", "*");//1:info,2:error,3:success,4:warningInteger key = result.get (j) .Keyset (). iterator (). next (); if (key == 1) {Timemap.put ("status", "info");} else if (key == 2) {Timemap.put ("Status", "Fehler");} else if (key == 3) {Timap.put.put.put ("Status", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "," status ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "; Timemap.put ("Status", "Warnung");} TimeArr.add (Timemap);}Das obige Beispiel des Java -Durchquerens von JSON -String -Wert ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.