Lorsque Java traversant la chaîne JSON et obtenant la valeur KV correspondante, divers problèmes sont causés, tels que la sortie de la liste en JSON pour la convertir en jsonArray, puis convertir l'objet dans la liste en une carte, puis prendre la valeur (la pratique précédente). Fairy, via FastJson d'Alibaba, vous pouvez facilement convertir STR en JSONArray, puis forcer l'objet dedans en JSONObject, puis obtenir la valeur via obj.getInteger ("Key") et Obj.getString ("Key").
JSONArray JSON = (JSONArray) JSONArray.Parse (Str); pour (Object Obj: JSON) {JSONObject Jo = (JSONObject) obj; int status = jo.getInteger ("statut"); String message = jo.getString ("message"); System.out.println ("Status ---" + Status + "--- Message ---" + Message);}1. Lorsqu'il y a des tableaux et des objets de carte dans la chaîne JSON, traversez les données et que le format de données est le suivant:
[{"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, Null, "Timestamp": 1492151922.2325, "Check": "datadog.agent.up", "host_name": "Song-2", "Message": null, "id": 5}]Lors de l'analyse des données de chaîne JSON ci-dessus, si vous n'utilisez pas FastJson ou GSON, la méthode d'analyse est la suivante:
Méthode 1
/ ** * Dans les détails de l'hôte, l'état du service de la plate-forme et le message du message d'erreur d'exception qui signale une erreur * @param str * @return * @throws exception * / private list <map <string, string >> operastr (String Str) lève exception {list <map <string >> mlist = list list <map <string, string >> (); // sonde-actiated Service Name list lishArray json = (jonarreAray. JSONArray.Parse (Str); Map <string, objet> objmap = null; Map <string, string> resmap = null; pour (objet obj: json) {objmap = obj2map (obj); @SuppressWarnings ("Unchecked") Map <String, Object> mobj = (map <string, objet>) objmap.get ("map"); int status = (entier) mobj.get ("statut"); if (status! = 0) {resmap = new hashmap <string, string> (); switch (status) {cas 1: resmap.put ("statut", "avertissement"); casser; cas 2: resmap.put ("statut", "erreur"); casser; Cas 3: resmap.put ("Status", "Crit"); casser; par défaut: pause; } resmap.put ("ServiceName", ((String) mobj.get ("check")). Split ("//.") [0]); resmap.put ("msg", (string) mobj.get ("message")); mList.add (resmap); }} return mlist; } / ** * Objet sur map * @param obj * @return * @throws exception * / public map <string, objet> obj2map (objet obj) lève exception {if (obj == null) {return null; } Map <string, objet> map = new hashmap <string, object> (); Champ [] champs = obj.getClass (). GetDeclaredFields (); pour (champ de champ: champs) {field.setAccessible (true); map.put (field.getName (), field.get (obj)); } retour de la carte; }Méthode 2
/ ** * Dans les détails de l'hôte, l'état du service de la plate-forme et le message du message d'erreur d'exception qui signale une erreur * @param str * @return * @throws exception * / private list <map <string, string >> operastr (String str) lève exception {list <map <string >> mlist = New ArrayList <map <string, string >> (); // le nom de service qui est le sond JSONArray.Parse (Str); Map <string, string> resmap = null; pour (objet obj: json) {jsonObject jo = (jsonObject) obj; int status = jo.getInteger ("statut"); if (status! = 0) {resmap = new hashmap <string, string> (); switch (status) {cas 1: resmap.put ("statut", "avertissement"); casser; cas 2: resmap.put ("statut", "erreur"); casser; Cas 3: resmap.put ("Status", "Crit"); casser; par défaut: pause; } resmap.put ("ServiceName", (jogetString ("check")). Split ("//.") [0]); resmap.put ("msg", Jo.getString ("message")); mList.add (resmap); }} return mlist; }2. Lorsqu'un tableau contient un tableau dans une chaîne JSON, itère les données et que le format de données est le suivant:
[["Haproxy", "Haproxy", 0, "Error", "SwdfghyJuikl", {}], ["Gearmand", "GearMand", 0, "Error", "'n'a trouvé aucune connexion valide dans la liste: [<<EmberManconnection LocalHost: 4730 Connected = false>]", {"version": "8, 4,"}]]Méthode 1
/ ** * Obtenez des informations d'exception en interrogeant agentCheckStr * @param agentcheckStr * @return * / private list <map <string, string >> getExceptinFofromagentChecks (String agentCheckSstr) {list <map <string, mlist = new ArrayList <map <String, statut >> (// STATRIED STATERIE-OPCITEM le rapport d'erreur d'erreur d'exception objet d'erreur jsonArray = jsonArray.Parse (agentChecksstr); @SuppressWarnings ("Unchecked") List <list <objet >> list = (list <list <object>>) jsonArray; Map <string, string> map = null; for (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 ("statut", statut); map.put ("msg", mlist.add (map);}} return mlist;}Méthode 2
/ ** * Obtenez des informations d'exception en interrogeant agentCheckStr * @param agentcheckStr * @return * / List private <map <string, string >> getExceptinFofromagentChecks (String agentCheckStr) {// sonde de service activé la liste <map <string, string >> mlist = new ArrayList <map <String> string >> (); JSONArray JSONArray = (JSONArray) JSONArray.Parse (AgentCheckStr); Map <string, string> map = null; pour (objet 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 ("statut", statut); map.put ("msg", mlist.add (map);}} return mlist;}GSON convertit les cordes JSON en objets JSON:
import com.google.gson.gson; import com.google.gson.jsonarray; import com.google.gson.jsonElement; import com.google.gson.jsonObject; import com.google.gson.jsonparser; public class maintest {public static void main (string [] args) throws exception {String jsonstr0 = "{/" AlarmDetails / ": {/" ConditionDetails / ": {/" AlarmId / ": 7, /" AlarmNodatanotifyTime / ": 1, /" AlarmNowSeriesWaitTime / ": 2}, / "ConditionStatic /": {/ "AlarmId /": 7, / "ConditionAggregate /": / "Avg /", / "ConditionOperator /": 1, / "ConstructionThresholdTime /": 5, / "ConstructionThresholdValue /": / "123 /"}, / "MetricDetails /": {/ "AlarmId /": 7, / "Metricaggregater /": / "Avg /", / "MetricBy /": / "host /", / "metRICEXCLUDETAG /": / "hôte: paAS-177 /", / "metricname /": / "System.cpu.user /", / "metricq /": / "avg: system.cpu.user { #Address: Wuhan ,! Host: PaaS-177} par {host} / ", /" Metrictag / ": /" # adresse: wuhan / "}, /" notify / ": [{/" alarmid / ": 7," el / ": 5, /" notifyuserid / ": 1}, {/" alarmid / ": 7, /" notifyChannel / ": 5, /" notifyUserid / ": 2}], /" View / ": {/" AlarmExpression / ": /" a vg (last_5m) avg: System.cpu.user {#address: wuhan ,! hôte: paAS-177} par {host}> 123.0 / ", /" alarmid / ": 7, /" alarlastvalue / ": /" up / ", /" AlarmName / ": /" static_metric / ", /" Alarmstatus / ": 1, /" AlarmType / ": 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 {hôte: cfeng-4, # adresse: wuhan ,! Hôte: PaaS-177} / ": {/" Changeputtime / ": true, /" lastputtsdbtime / ": 1499655343, /" LastSuccesschecktimetime /":1499655349 ,/"Series/":/"avg:System.cpu.user {host:cfeng-4, #address:wuhan,!host:paas-177 )/" ,/ "tagmap /": {/ "host /": / "cfeng-4 /", / "# adress /": / "wuhan /", / "! host /": / "paaS-177 /"}}}, / "joinType /": 3,/"useMetricUnit/":/"percent/",/"validataDetails/":{/"status/":0,/"validataMerges/":[{/"alarmMarkDto/":{/"changePutTime/":true,/"lastPutTsdbTime/":1499655343,/"lastSuccessCheckTime/":1499 655349, / "série /": / "avg: system.cpu.user {hôte: cfeng-4, # adresse: wuhan ,! hôte: paAS-177} /", / "tagmap / ": {/" host / ": /" cfeng-4 / ", /" # adress / ": /" wuhan / ", /"! host / ": /" paaS-177 / "}}, /" status / ": 0, /" tag / ":: / "hôte: cfeng-4 /", / "validatanodata /": {/ "currenttime /": 1499655349, / "Isnodata /": false, / "LastSucc Esschecktime / ": 1499655349, /" série / ": /" avg: System.cpu.user {hôte: cfeng-4, # Adresse: Wuhan ,! Host: P aas-177} / ", /" tag / ": {/" host / ": /" cfeng-4 / ", /" # adress / ": /" wuhan / ", /"! host / ": /" paAS-177 / "}, /" thre sholdtime / ": 60}, /" validatastatic / ": {/" convertothresholdvalue / ": 123.0, /" end / ": 1499655343, /" Inte rvalaggregator / ": /" avg / ", /" Isalart / ": true, /" opérateur / ": 1, /" série / ": /" avg: system.cpu.user {hôte : CFeng-4, # Adresse: Wuhan ,! Host: PaaS-177} / ", /" start / ": 1499655043, /" sysunit / ": /"% / ", /" tag / "" : {/ "# adress /": / "wuhan /", / "host /": / "cfeng-4 /", / "! host /": / "PaaS-177 /"}, / "thresholdtime /": 300, / " ThresholdValue / ": /" 123 / ", /" Value / ": 5.715769243240357}}], /" validatatimesseconds / ": 1499655349}}"; String JSONSTR1 = "{/" AlarmDetails / ": {/" ConditionDetails / ": {/" AlarmId / ": 7, /" AlarmNodatanotifyTime / ": 1, /" AlarmNowSeriesWaitTime / ": 2}, / "ConditionStatic /": {/ "AlarmId /": 7, / "ConditionAggregate /": / "Avg /", / "ConditionOperator /": 1, / "ConstructionThresholdTime /": 5, / "ConstructionThresholdValue /": / "123 /"}, / "MetricDetails /": {/ "AlarmId /": 7, / "Metricaggregater /": / "Avg /", / "MetricBy /": / "host /", / "metRICEXCLUDETAG /": / "hôte: paAS-177 /", / "metricname /": / "System.cpu.user /", / "metricq /": / "avg: system.cpu.user { #Address: Wuhan ,! Host: PaaS-177} par {host} / ", /" Metrictag / ": /" # adresse: wuhan / "}, /" notify / ": [{/" alarmid / ": 7," el / ": 5, /" notifyuserid / ": 1}, {/" alarmid / ": 7, /" notifyChannel / ": 5, /" notifyUserid / ": 2}], /" View / ": {/" AlarmExpression / ": /" a vg (last_5m) avg: System.cpu.user {#address: wuhan ,! hôte: paAS-177} par {host}> 123.0 / ", /" alarmid / ": 7, /" alarlastvalue / ": /" up / ", /" AlarmName / ": /" static_metric / ", /" Alarmstatus / ": 1, /" AlarmType / ": 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 {hôte: cfeng-4, # adresse: wuhan ,! Hôte: PaaS-177} / ": {/" Changeputtime / ": true, /" lastputtsdbtime / ": 1499655374, /" LastSuccesschecktimetime /":1499655379 ,/"Series/":/"avg:System.cpu.user {host:cfeng-4, #address:wuhan,!host:paas-177 )/" ,/ "tagmap /": {/ "host /": / "cfeng-4 /", / "# adress /": / "wuhan /", / "! host /": / "paaS-177 /"}}}, / "joinType /": 3, / "useMetricUnit /": / "pour cent /", / "validatadetails /": {/ "status /": 0, / "validatamerges /": [{/ "alarmMarkdto /": {/ "Changeputtime /": "true, /" lastputtsdbtime / ": 1499655374, /" LastSucCesschecktime / ": 1499655374, /" LastSucCesschecktime / ": 1499655374, /" LastSucCesschecktime 655379, / "série /": / "avg: system.cpu.user {hôte: cfeng-4, # adresse: wuhan ,! hôte: paAS-177} /", / "tagmap / ": {/" host / ": /" cfeng-4 / ", /" # adress / ": /" wuhan / ", /"! host / ": /" paaS-177 / "}}, /" status / ": 0, /" tag / ":: / "hôte: cfeng-4 /", / "validatanodata /": {/ "currenttime /": 1499655379, / "isNodata /": false, / "LastSucc Esschecktime / ": 1499655379, /" série / ": /" avg: System.cpu.user {hôte: cfeng-4, # Adresse: Wuhan ,! Host: P aas-177} / ", /" tag / ": {/" host / ": /" cfeng-4 / ", /" # adress / ": /" wuhan / ", /"! host / ": /" paAS-177 / "}, /" thre sholdtime / ": 60}, /" validatastatic / ": {/" convertothresholdvalue / ": 123.0, /" end / ": 1499655374, /" Inte rvalaggregator / ": /" avg / ", /" Isalart / ": true, /" opérateur / ": 1, /" série / ": /" avg: system.cpu.user {hôte : CFeng-4, # Adresse: Wuhan ,! Host: PaaS-177} / ", /" start / ": 1499655074, /" sysunit / ": /"% / ", /" tag / "" : {/ "# adress /": / "wuhan /", / "host /": / "cfeng-4 /", / "! host /": / "PaaS-177 /"}, / "thresholdtime /": 300, / " ThresholdValue / ": /" 123 / ", /" Value / ": 5.089640821729388}}], /" validatatimesEcondes / ": 1499655379}}"; Set <string> set = new HashSet <string> (); set.add (jsonstr0); set.add (jsonstr1); Gson gs = new gson (); List <Object> EventList = new ArrayList <Bject> (); for (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 ("validataMerges"). GetasjsonArray (); JSONArray nf = ad.get ("notify"). GetasjsonArray (); JSONObject v = ad.get ("View"). GetasjsonObject (); String validatatimesEnconds = vd.get ("validatatimeseconds"). ToString (); pour (jsonElement je: vm) {je.getasjsonObject (). add ("vue", v); je.getasjsonObject (). add ("notify", nf); je.getasjsonObject (). AddProperty ("validatatimessecondes", long.parselong (validatatimesEcondes)); eventList.add (JE); }} pour (objet obj: eventList) {String inParam = gs.tojson (obj); System.out.println (inparam); } System.out.println (gs.tojson (EventList)); }} //Get device information (only hardware devices and virtual devices have it) HashMap<String,String> paramMap = new HashMap<String,String>();paramMap.put("hostid", mHostId);paramMap.put("ptype", dto.getPtype());paramMap.put("type_flag", dto.getTypeFlag ()); parammap.put ("api_key", apikey); String Resstr = httputils.get (device_info_url, Parammap); jsonObject Jobj = JSO restaurer = jobj.get ("result"). toString (); DeviceInfodto deviceInfodto = new GSON (). Fromjson (empreinte, deviceInfodto.class); dto.setDeviceInfo (deviceInfodto);} List <map <Integer, long >> result = new ArrayList <map <Integer, long >> (); map <string, string> timeMap = null; list <map <string, string >> timearr = new ArrayList <map <string, string >> (); for (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: succès, 4: WarningInteger key = result.get (j) .KeySet (). Iterator (). next (); if (key == 1) {timeMap.put ("status", "info");} else if (key == 2) {timeMap.put ("status", "error");} else if (key == 3) {timeMap.put ("Status", "Success");} else if (key) timeMap.put ("Status", "avertissement");} timearr.add (TimeMap);}L'exemple ci-dessus de la valeur Java traversant JSON est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.