Когда Java пересекает строку JSON и получая соответствующее значение KV, возникают различные проблемы, такие как вывод списка в JSON для преобразования его в JSonarray, затем преобразование объекта в список в карту, а затем принятие значения (предыдущая практика). Фея, через Fastjson Alibaba, вы можете легко преобразовать STR в jsonarray, затем заставить объект в нем в jsonObject, а затем получить значение через obj.getInteger («key») и obj.getString («Key»).
Jsonarray json = (jsonarray) jsonarray.parse (str); for (объект obj: json) {jsonObject jo = (jsonObject) obj; int status = jo.getInteger ("Статус"); String message = jo.getString ("Сообщение"); System.out.println ("status ---" + status + "--- Сообщение ---" + Сообщение);}1. Когда в строке JSON есть массивы и объекты MAP, пройдите данные, а формат данных выглядит следующим образом:
[{"status": 0, "Tags": ["check: ntp"], "timeStamp": 1492151922.198, "check": "datadog.agent.check_status", "host_name": "Song-2", "Сообщение": null, "Id": 2}, {": 0,". "TimeStamp": 1492151922.2325, "Check": "datadog.agent.up", "host_name": "Song-2", "Сообщение": NULL, "ID": 5}]При анализе приведенных выше строковых данных JSON, если вы не используете FastJson или GSON, метод анализа выглядит следующим образом:
Метод 1
/** * В деталях хоста статус службы платформы и сообщение сообщения об ошибке исключения, в которой сообщается об ошибке * @param Str * @return * @Throws Exception */Private List <Map <String, String >> Operastr (String Str) throws exection {List <String, String >> mlist = new ArrayList <map <string >> (); // probe-Activated vicom Jsonarray.parse (str); Карта <string, object> objmap = null; Map <string, string> resmap = null; for (объект obj: json) {objmap = obj2map (obj); @Suppresswarnings ("unchecked") map <string, object> mobj = (map <string, object>) objmap.get ("map"); int status = (integer) mobj.get ("status"); if (status! = 0) {resmap = new hashmap <string, string> (); Switch (status) {case 1: resmap.put ("status", "предупреждение"); перерыв; Случай 2: resmap.put ("status", "ошибка"); перерыв; Случай 3: resmap.put ("status", "crit"); перерыв; по умолчанию: перерыв; } resmap.put ("serviceName", ((String) mobj.get ("check")). Split ("//". ") [0]); resmap.put ("msg", (string) mobj.get ("message")); mlist.add (resmap); }} return mlist; } / ** * объект для карты * @param obj * @return * @throhs excection * / public map <string, object> obj2map (Object obj) бросает исключение {if (obj == null) {return null; } Map <string, object> map = new hashmap <string, object> (); Field [] fields = obj.getClass (). GetDeclaredFields (); для (поле поле: Fields) {field.setAccessible (true); map.put (field.getName (), field.get (obj)); } return Map; }Метод 2
/** * В деталях хоста статус службы платформы и сообщение сообщения об ошибке исключения, в котором сообщает об ошибке * @param str * @return * @Throws Exception */Private List <Map <String, String >> Operastr (String Str) throws Exception {List <String <String >> mlist = new ArrayList <Map <String >> (); // Служба Имя. Jsonarray.parse (str); Map <string, string> resmap = null; for (объект obj: json) {jsonObject jo = (jsonObject) obj; int status = jo.getInteger ("Статус"); if (status! = 0) {resmap = new hashmap <string, string> (); Switch (status) {case 1: resmap.put ("status", "предупреждение"); перерыв; Случай 2: resmap.put ("status", "ошибка"); перерыв; Случай 3: resmap.put ("status", "crit"); перерыв; по умолчанию: перерыв; } resmap.put ("serviceName", (jo.getString ("check")). Split ("//.") [0]); resmap.put ("msg", jo.getString ("Сообщение")); mlist.add (resmap); }} return mlist; }2. Когда массив содержит массив в строке JSON, итерации над данными, а формат данных заключается в следующем:
[["haproxy", "haproxy", 0, "error", "swdfghyjuikl", {}], ["gearmand", "gearmand", 0, "ошибка", "" не обнаружил действительных соединений в списке: [<gearmanconnection localhost: 4730 Connected = forse>] '", {": "[8, 4, 20]", 20, 4, 20] ", 20, 4, 20]".Метод 1
/** * Получить информацию об исключении, запросив agentchecksstr * @param Agentchecksstr * @return */private list <map <string, string >> getExceptInfOfromagentCecks (String AgentChecksstr) {List <String, String >> news = new ArrayList <string, string >>; // Проблема-аактивированная служба. Сообщение об ошибке ошибки исключения объект jsonarray = jsonarray.parse (AgentChecksstr); @Suppresswarnings ("unchecked") list <list <Object >> 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 ("status", status); map.put ("msg", mlist.add (map);}} return mlist;}Метод 2
/** * Получить информацию об исключении путем запроса AgentChecksstr * @param Agentchecksstr * @return */private list <map <string, string >> getExceptInfOfromagentCecks (string AgentChecksstr) {// Зондование включенного имен службы <map <string >> mlist = new ArrayList <string, string >> ();); Jsonarray jsonarray = (jsonarray) jsonarray.parse (AgentChecksstr); Map <string, string> map = null; for (Object 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 преобразует строки JSON в объекты JSON:
Импорт 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). "{/" armiddetails/": {/" ConditionDetails/": {/" calmiad/": 7,/" armidnodatanotifytime/": 1,/" armedowserieswaittime/": 2},/ "ConditionStatic/": {/"armeraid/": 7,/"ConditionAggregate/":/"avg/",/"ConditionOperator/": 1,/"ConditionThresholdtime/": 5,/"ConditionThresholdValue/":/"123/"},/"MetricDetails/": {/"calmiad/": 7,/"MetricAggregater/":/"avg/",/"metricby/"://" "Host/",/"MetricexCludetag/":/"Host: PaAs-177/",/"MetricName/":/"System.cpu.user/",/"metricq/":/"Avg: System.cpu.user { #Address: wuhan ,! HOST: PAAS-177} от {host}/",/" metrictag/":/"#адрес: wuhan/"},/" notify/": [{/" armeriad/": 7,/" notifychann el/": 5,/" notifyUserid/": 1}, {/" calmiad/": 7,/" notifyChannel/": 5,/" notifyUserid/": 2}],/" view/": {/" calardExpression/":/" a vg (last_5m) avg: system.cpu.user {#Address: wuhan ,! Host: paaS-177} от {host}> 123.0/",/" armerid/": 7,/" armedlastvalue/":/" 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/":/"#адрес: wuhan/",/" updateTime/":/" 2017-06-29 15: 49: 18.0/"}},/" Alarmid/": 7,/" Allmark/": {/" avg: System.cpu.user {host: cfeng-4,#адрес: wuhan,! Хост: PAAS-177}/": {/" changePuttime/": true,/" lastputtSdbtime/": 1499655343,/" LastSuccessChecktime /":1499655349,/"series/"/"avg:system.cpu.user_host:cfeng-4,#address:wuhan, "Tagmap/": {/"host/":/"cfeng-4/",/"#address/":/"wuhan/",/"! Host/":/"paas-177/"}}},/"jointype/": 3,/"usemetricUnit/":/"процент/",/"validatadetails/": {/"status/": 0,/"validatamerges/": [{/"AlarmmarkDto/": {/"reameputtime/": true,/"lastputtsDbtime/": 1496555343,/"lastsuccessceckmemememe/": 149655343,/"" 655349,/"series/":/"avg: system.cpu.user {host: cfeng-4,#адрес: wuhan ,! host: paas-177}/",/"Tagmap /": {/" host/":/" cfeng-4/",/"#address/":/" wuhan/",/"! Host/":/" Paas-177/"}},/" "Статус/": 0,/"Tag/" :: /"Host: Cfeng-4/",/"validatanodata/": {/"currenttime/": 14996555349,/"isnodata/": false,/"lastsucc Esschecktemtime/": 1499655349,/" series/":/" avg: system.cpu.user {host: cfeng-4,#адрес: wuhan ,! Host: p AAS-177}/",/" Tag/": {/" host/":/" cfeng-4/",/"#address/":/" wuhan/",/"! Host/":/" Paas-177/"},/" Thre sholdtime/": 60},/" validataTatic/": {/" convertothresholdvalue/": 123.0,/" end/": 14996555343,/" Inte rvalaggregator/":/" avg/",/" isalart/": true,/" operator/": 1,/" series/":/" avg: system.cpu.user {host : cfeng-4,#Адрес: Wuhan ,! Host: paas-177}/",/" start/": 1499655043,/" sysunit/":/" процент/",/" Tag/"" : {/"#address/":/"wuhan/",/"host/":/"cfeng-4/",/"! Host/":/"Paas-177/"},/"ThresholdTime/": 300,/" ThrosholdValue/":/" 123/",/" "значение/": 5.715769243240357}}],/"validatatimeeconds/": 1499655349}} "; String JSonstr1 = "{/" armiddetails/": {/" ConditionDetails/": {/" calmiad/": 7,/" armidnodatanotifytime/": 1,/" armedowserieswaittime/": 2},/ "ConditionStatic/": {/"armeraid/": 7,/"ConditionAggregate/":/"avg/",/"ConditionOperator/": 1,/"ConditionThresholdtime/": 5,/"ConditionThresholdValue/":/"123/"},/"MetricDetails/": {/"calmiad/": 7,/"MetricAggregater/":/"avg/",/"metricby/"://" "Host/",/"MetricexCludetag/":/"Host: PaAs-177/",/"MetricName/":/"System.cpu.user/",/"metricq/":/"Avg: System.cpu.user { #Address: wuhan ,! HOST: PAAS-177} от {host}/",/" metrictag/":/"#адрес: wuhan/"},/" notify/": [{/" armeriad/": 7,/" notifychann el/": 5,/" notifyUserid/": 1}, {/" calmiad/": 7,/" notifyChannel/": 5,/" notifyUserid/": 2}],/" view/": {/" calardExpression/":/" a vg (last_5m) avg: system.cpu.user {#Address: wuhan ,! Host: paaS-177} от {host}> 123.0/",/" armerid/": 7,/" armedlastvalue/":/" 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/":/"#адрес: wuhan/",/" updateTime/":/" 2017-06-29 15: 49: 18.0/"}},/" Alarmid/": 7,/" Allmark/": {/" avg: System.cpu.user {host: cfeng-4,#адрес: wuhan,! Хост: PAAS-177}/": {/" changePuttime/": true,/" lastputtsDbtime/": 1499655374,/" lastSuccessChecktime /":1499655379 ,/"series/"/"avg:system.cpu.user_host:cfeng-4,#address:wuhan, "Tagmap/": {/"host/":/"cfeng-4/",/"#address/":/"wuhan/",/"! Host/":/"paas-177/"}}},/"jointype/": 3,/"useMetricUnit/":/"процент/",/"validatadetails/": {/"status/": 0,/"validatamerges/": [{/"armidmarkdto/": {/"reameputtime/": true,/"lastputtsdbtime/": 149655374,/"lastsuccessceckemememe/": 1496555374,/"" 655379,/"series/":/"avg: system.cpu.user {host: cfeng-4,#адрес: wuhan ,! Host: paas-177}/",/"Tagmap /": {/" host/":/" cfeng-4/",/"#address/":/" wuhan/",/"! Host/":/" Paas-177/"}},/" "Статус/": 0,/"Tag/" :: /"Host: Cfeng-4/",/"validatanodata/": {/"currenttime/": 14996555379,/"isnodata/": false,/"lastsucc Esschecktemtime/": 1499655379,/" series/":/" avg: system.cpu.user {host: cfeng-4,#адрес: wuhan ,! Host: p AAS-177}/",/" Tag/": {/" host/":/" cfeng-4/",/"#address/":/" wuhan/",/"! Host/":/" Paas-177/"},/" Thre sholdtime/": 60},/" validatastatic/": {/" convertothresholdvalue/": 123.0,/" end/": 14996555374,/" Inte rvalaggregator/":/" avg/",/" isalart/": true,/" operator/": 1,/" series/":/" avg: system.cpu.user {host : cfeng-4,#адрес: wuhan ,! Host: paas-177}/",/" start/": 1499655074,/" sysunit/":/" процент/",/" Tag/"" : {/"#address/":/"wuhan/",/"host/":/"cfeng-4/",/"! Host/":/"Paas-177/"},/"ThresholdTime/": 300,/" ThrosholdValue/":/" 123/",/" "значение/": 5.089640821729388}}],/"validatatiumeeconds/": 1499655379}} "; SET <String> set = new Hashset <String> (); set.add (jsonstr0); set.add (jsonstr1); Gson GS = new Gson (); Список <object> eventlist = new ArrayList <Object> (); for (string str: set) {jsonObject returnData = new jsonParser (). parse (str) .getAsjsonObject (); Jsonobject ad = returndata.get ("armeddetails"). 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 validatatimeseconds = vd.get ("validatitimeseconds"). ToString (); for (jsonelement je: vm) {je.getasjsonobject (). add ("view", v); je.getasjsonobject (). add ("notify", nf); je.getasjsonobject (). addProperty ("validatimimeseconds", long.parselong (validatimimeseconds)); Eventlist.Add (JE); }} for (Object obj: eventlist) {string inparam = gs.tojson (obj); System.out.println (inparam); } System.out.println (gs.tojson (Eventlist)); }} // Получить информацию об устройстве (есть только аппаратные устройства и виртуальные устройства) 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 = json.parseobject (resstr); jsonObject obj = (jsonObject) jobj.get (structive "); RESTORE = jobj.get ("result"). toString (); DeviceInfodto deviceinfodto = new gson (). Fackjson (rtrs, deviceinfodto.class); dto.setDeviceInfo (deviceInfodto);} Список <map <integer, long >> result = new ArrayList <map <integer, long >> (); map <string, string> timemap = null; list <map <string, string >> rimearr = 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.currenttimemilyis () + "");} 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: Информация, 2: ошибка, 3: успех, 4: ключ Warningnteger = 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 ("Состояние", "успешно"); timemap.put ("status", "Warning");} timearr.add (timemap);}Приведенный выше пример Java Traversing String String Value - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.