عندما تعبر Java سلسلة JSON والحصول على قيمة KV المقابلة ، يتم حدوث مشاكل مختلفة ، مثل إخراج القائمة في JSON لتحويلها إلى jsonarray ، ثم تحويل الكائن في القائمة إلى خريطة ، ثم أخذ القيمة (الممارسة السابقة). Fairy ، من خلال Fastjson من Alibaba ، يمكنك بسهولة تحويل STR إلى Jsonarray ، ثم إجبار الكائن فيه على JSonObject ، ثم الحصول على القيمة من خلال OBJ.GetInteger ("Key") و OBJ.GetString ("Key").
jsonarray json = (jsonarray) jsonarray.parse (str) ؛ for (object obj: json) {jsonobject jo = (jsonobject) obj ؛ int status = jo.getInteger ("الحالة") ؛ رسالة سلسلة = jo.getString ("رسالة") ؛ System.out.println ("الحالة ---" + الحالة + "--- رسالة ---" + رسالة) ؛}1. عندما تكون هناك صفائف وأكائنات خريطة في سلسلة JSON ، اجتاز البيانات ، وتنسيق البيانات كما يلي:
[{"الحالة": 0 ، "علامات": ["تحقق: NTP"] ، "Timestamp": 1492151922.198 ، "Check": "datadog.agent.check_status" ، "host_name": "song-2" ، "Timestamp": 1492151922.2325 ، "Check": "DataDog.agent.up" ، "Host_name": "Song-2" ، "Message": NULL ، "id": 5}]عند تحليل بيانات سلسلة JSON أعلاه ، إذا لم تستخدم Fastjson أو GSON ، فإن طريقة التحليل هي كما يلي:
الطريقة 1
/** * في تفاصيل المضيف ، حالة خدمة النظام الأساسي ورسالة رسالة خطأ الاستثناء التي تشير إلى خطأ * param str * regurn * @throws استثناء */قائمة خاصة <map <string ، string >> Operast (string str) request {list <string ، string >> mlist = new arraylist <string ، jsonarray.parse (str) ؛ خريطة <string ، object> objmap = null ؛ خريطة <string ، string> resmap = null ؛ لـ (Object OBJ: JSON) {objmap = obj2map (obj) ؛ suppressWarnings ("untched") الخريطة <string ، object> mobj = (map <string ، object>) objmap.get ("map") ؛ int status = (integer) mobj.get ("الحالة") ؛ if (الحالة! = 0) {resmap = new hashMap <string ، string> () ؛ التبديل (الحالة) {الحالة 1: resmap.put ("الحالة" ، "تحذير") ؛ استراحة؛ الحالة 2: resmap.put ("الحالة" ، "خطأ") ؛ استراحة؛ الحالة 3: resmap.put ("الحالة" ، "crit") ؛ استراحة؛ الافتراضي: استراحة ؛ } resmap.put ("servicename" ، ((string) mobj.get ("check"). split ("//.") [0]) ؛ resmap.put ("msg" ، (string) mobj.get ("message")) ؛ mlist.add (resmap) ؛ }} return mlist ؛ } / ** * Object to map * param obj * return * @throws استثناء * / خريطة عامة <string ، object> obj2map (Object OBJ) يرمي الاستثناء {if (obj == null) {return null ؛ } Map <String ، Object> map = new HashMap <string ، Object> () ؛ الحقل [] الحقول = obj.getClass (). getDeclaredFields () ؛ لـ (حقل الحقل: الحقول) {field.setAccessible (true) ؛ map.put (field.getName () ، field.get (obj)) ؛ } خريطة الإرجاع ؛ }الطريقة 2
/** * في تفاصيل المضيف ، حالة خدمة النظام الأساسي ورسالة رسالة خطأ الاستثناء التي تشير إلى خطأ * param str * return * @throws استثناء */قائمة خاصة <map <string ، string >> operast (String str) requist {list <map ، string >> mlist = new arraylist <string ، jsonarray.parse (str) ؛ خريطة <string ، string> resmap = null ؛ لـ (Object OBJ: JSON) {jsonobject jo = (jsonobject) obj ؛ int status = jo.getInteger ("الحالة") ؛ if (الحالة! = 0) {resmap = new hashMap <string ، string> () ؛ التبديل (الحالة) {الحالة 1: resmap.put ("الحالة" ، "تحذير") ؛ استراحة؛ الحالة 2: resmap.put ("الحالة" ، "خطأ") ؛ استراحة؛ الحالة 3: resmap.put ("الحالة" ، "crit") ؛ استراحة؛ الافتراضي: استراحة ؛ } resmap.put ("servicename" ، (jo.getString ("check")). split ("//.") [0]) ؛ resmap.put ("msg" ، jo.getString ("message")) ؛ mlist.add (resmap) ؛ }} return mlist ؛ }2. عندما يحتوي صفيف على صفيف في سلسلة JSON ، يتكرر على البيانات ، وتنسيق البيانات كما يلي:
[["haproxy" ، "haproxy" ، 0 ، "error" ، "swdfghyjuikl" ، {}] ، ["Gearmand" ، "GearMand" ، 0 ، "Error" ، "" "الطريقة 1
/** * احصل على معلومات استثناء عن طريق Querying AgentChecksStr * param AgentCheCksStr * regurn */قائمة خاصة <map ، string >> getExceptInfofOfromAgentChecks (string agentchecksstr) {list <map ، string >> mlist = new arraylist <string ، استثناء رسالة خطأ تقرير خطأ كائن jsonarray = jsonarray.parse (AgentChecksStr) ؛ suppressWarnings ("Unchected") قائمة <list <object> list = (list <list <object>) jsonarray ؛ الخريطة <string ، string> map = null ؛ لـ (int i = 0 ؛ i <list.size () ؛ i ++) {map = new hashmap <string ، string> () ؛ حالة السلسلة = 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 ("الحالة" ، الحالة) ؛ map.put ("msg" ، mlist.add (map) ؛}} return mlist ؛}الطريقة 2
/** * احصل على معلومات استثناء عن طريق Querying AgentChecksStr * param AgentChecksStr * regurn */قائمة خاصة <map ، string >> getExceptInfofOfromAgentChecks (string AgentChecksStstr) {// probe تمكين قائمة اسم خدمة <map <string ، string> mlist = new arraylist <map <string >> () () ؛ jsonarray jsonarray = (jsonarray) jsonarray.parse (AgentChecksStr) ؛ الخريطة <string ، string> map = null ؛ لـ (Object OBJ: JSONARRAY) {map = new hashMap <string ، string> () ؛ jsonarray ja = (jsonarray) obj ؛ حالة السلسلة = ja.getString (3) ؛ if (! status.equals ("ok")) {String serviceName = ja.getString (0) ؛ سلسلة msg = ja.getString (4) ؛ map.put ("servicename" ، servicename) ؛ map.put ("الحالة" ، الحالة) ؛ map.put ("msg" ، mlist.add (map) ؛}} return mlist ؛}يحول GSON سلاسل JSON إلى كائنات JSON:
استيراد com.google.gson.gson ؛ استيراد com.google.gson.jsonarray ؛ استيراد com.google.gson.jsonelement ؛ استيراد com.google.gson.jsonoBject ؛ استيراد com.google.gson.jsonparser "{/" erastDetails/": {/" inctionDetails/": {/" ARARARDID/": 7 ،/ "inctionStatic/": {/"Alarmid/": 7 ،/"IntermagGregate/":/"Avg/" ،/"InteCtionOperator/": 1 ،/"inctionThresholdtime/": 5 ،/"inctionThresholdValue/":/"123/"} ،/"metricDetails/": {/ "مضيف/" ،/"metricexcludetag/":/"المضيف: paas-177/" ،/"metricname/":/"system.cpu.user/" ،/"metricq/":/ #Address: Wuhan ،! المضيف: PAAS-177} بواسطة {Host}/"،/" metrictag/":/"#address: wuhan/"} ،/" etreify/": [{/ EL/": 5 ،/" NotifyUserId/": 1} ، {/" ARARARDID/": 7 ،/" NotifyChannel/": 5 ،/" NotifyuserId/": 2}] ،/" view/": {/" erverexpression/":/" a VG (last_5m) avg: system.cpu.user {#address: wuhan ،! host: paas-177} بواسطة {host}> 123.0/"،/" aravid/": 7 ،/" ariaslastvalue/":/" up /"،/" ARARARDNAME/":/" static_metric/"،/" eravStatus/": 1 ،/" AlarmType/": 2 ،/" ARARARDTYPEJOIN/": 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/":/"#address: wuhan/"،/" updateTime/":/" 2017-06-29 15: 49: 18.0/"}} ،/" ARALARDID/": 7 ،/" allmark/": {/" avg: system.cpu.user {host: cfeng-4 ،#address: wuhan ،! المضيف: PAAS-177}/": {/" changeputtime/": true ،/" lastputtsdbtime/": 1499655343 ،/" lastSuccessCheckTime بر "tagmap/": {/"host/":/"cfeng-4/" ،/"#address/":/"wuhan/" ،/"! host/":/ 3 ،/"UsemetricUnit/":/"prex/" ،/"validatadetails/": {/"status/": 0 ،/"facalatamerges/": [{/"AlarmmarkDto/": {/"changeputtime/":/"apperputtsdbtime/": 1499655343 ،/ 655349 ،/"series/":/"avg: system.cpu.user {host: cfeng-4 ،#address: wuhan ،! host: paas-177}/" ،/"tagmap /": {/" host/":/" cfeng-4/"،/"#address/":/" wuhan/"،/"! host/":/" paas-177/"}} ،/ /"Host: CFENG-4/" ،/"validatanodata/": {/"CurrentTime/": 1499655349 ،/"ISnodata/": false ،/"lastsucc Esschecktime/": 1499655349 ،/" Series/":/" Avg: System.cpu.user {Host: Cfeng-4 ،#العنوان: Wuhan ،! المضيف: ص AAS-177}/"،/" tag/": {/" host/":/" cfeng-4/"،/"#address/":/ sholdtime/": 60} ،/" alightatastatic/": {/" convertOthResholdValue/": 123.0 ،/" end/": 1499655343 ،/" inte rvalaggregator/":/" avg/"،/" isalart/": true ،/" corpator/": 1 ،/" series/":/" avg: system.cpu.user {host : CFENG-4 ،#العنوان: Wuhan ،! المضيف: PAAS-177}/"،/" start/": 1499655043 ،/" sysunit/":/" prex/"،/" tag/"" : {/"#address/":/"wuhan/" ،/"host/":/"cfeng-4/" ،/"! host/":/"paas-177/"} ،/ ThresholdValue/":/" 123/"،/" value/": 5.715769243240357}}] ،/ سلسلة jsonstr1 = "{/" erastDetails/": {/" inctionDetails/": {/" ARARARDID/": 7 ،/ "inctionStatic/": {/"Alarmid/": 7 ،/"IntermagGregate/":/"Avg/" ،/"InteCtionOperator/": 1 ،/"inctionThresholdtime/": 5 ،/"inctionThresholdValue/":/"123/"} ،/"metricDetails/": {/ "مضيف/" ،/"metricexcludetag/":/"المضيف: paas-177/" ،/"metricname/":/"system.cpu.user/" ،/"metricq/":/ #Address: Wuhan ،! المضيف: PAAS-177} بواسطة {Host}/"،/" metrictag/":/"#address: wuhan/"} ،/" etreify/": [{/ EL/": 5 ،/" NotifyUserId/": 1} ، {/" ARARARDID/": 7 ،/" NotifyChannel/": 5 ،/" NotifyuserId/": 2}] ،/" view/": {/" erverexpression/":/" a VG (last_5m) avg: system.cpu.user {#address: wuhan ،! host: paas-177} بواسطة {host}> 123.0/"،/" aravid/": 7 ،/" ariaslastvalue/":/" up /"،/" ARARARDNAME/":/" static_metric/"،/" eravStatus/": 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/":/"#address: wuhan/"،/" updateTime/":/" 2017-06-29 15: 49: 18.0/"}} ،/" ARALARDID/": 7 ،/" allmark/": {/" avg: system.cpu.user {host: cfeng-4 ،#address: wuhan ،! المضيف: PAAS-177}/": {/" changeputtime/": true ،/" lastputtsdbtime/": 1499655374 ،/" lastSuccessCheckTime /":149965379،/"series/":/"avg:system.cpu.user {host:cfeng-4،#address:wuhan ، "tagmap/": {/"host/":/"cfeng-4/" ،/"#address/":/"wuhan/" ،/"! host/":/ 3 ،/"UsemetricUnit/":/"prex/" ،/"facalatadetails/": {/"status/": 0 ،/"facalatamerges/": [{/"AlarmmarkDto/": {/"changeputtime/":/"apperputtsdbtime/": 1499655374 ،/ 655379 ،/"series/":/"avg: system.cpu.user {host: cfeng-4 ،#address: wuhan ،! host: paas-177}/" ،/"tagmap /": {/" host/":/" cfeng-4/"،/"#address/":/" wuhan/"،/"! host/":/" paas-177/"}} ،/ /"Host: CFENG-4/" ،/"validatanodata/": {/"currenttime/": 1499655379 ،/"isnodata/": false ،/"lastsucc Esschecktime/": 1499655379 ،/" Series/":/" Avg: System.cpu.user {Host: Cfeng-4 ،#العنوان: Wuhan ،! المضيف: ص AAS-177}/"،/" tag/": {/" host/":/" cfeng-4/"،/"#address/":/ sholdtime/": 60} ،/" alightatastatic/": {/" convertOthResholdValue/": 123.0 ،/" end/": 1499655374 ،/" inte rvalaggregator/":/" avg/"،/" isalart/": true ،/" corpator/": 1 ،/" series/":/" avg: system.cpu.user {host : CFENG-4 ،#العنوان: Wuhan ،! المضيف: PAAS-177}/"،/" start/": 1499655074 ،/" sysunit/":/" prex/"،/" tag/"" : {/"#address/":/"wuhan/" ،/"host/":/"cfeng-4/" ،/"! host/":/"paas-177/"} ،/ ThresholdValue/":/" 123/"،/" value/": 5.089640821729388}}] ،/ SET <STRING> SET = NEW HASHSET <STRING> () ؛ set.add (jSonstR0) ؛ set.add (jsonstr1) ؛ gson gs = new gson () ؛ قائمة <Object> eventlist = new ArrayList <Object> () ؛ لـ (String str: set) {jsonobject returndata = new Jsonparser (). parse (str) .getasjsonobject () ؛ jsonobject ad = returndata.get ("aravedDetails"). getasjsonobject () ؛ jsonobject vd = returnData.get ("ValidatAdetails"). getAsjsonObject () ؛ jsonarray vm = vd.get ("Validatamerges"). getasjsonarray () ؛ jsonarray nf = ad.get ("إعلام"). getasjsonarray () ؛ jsonobject v = ad.get ("view"). getasjsonobject () ؛ string applatateMimesEconds = vd.get ("ValidatateMimesEconds"). toString () ؛ لـ (jsonelement je: vm) {je.getasjsonobject (). add ("view" ، v) ؛ je.getasjsonobject (). add ("إخطار" ، nf) ؛ je.getasjsonoBject (). addProperty ("ValidateAmeSeconds" ، long.parselong (validateAmeSeconds)) ؛ eventlist.add (JE) ؛ }} لـ (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.pot ("type_flag" ، dto.gettypeflag ()) ؛ parammap.put ("api_key" ، apikey) ؛ string resstr = httputils.get (device_info_url ، parammap) ؛ jsonobject jobj = json.parsoObject (resstr) ؛ jsonobject obj = jsonobject) استعادة = jobj.get ("النتيجة"). toString () ؛ deviceInfodto deviceInfodto = new gson (). fromJson (crown ، deviceInfodto.class) ؛ dto.setDeviceInfo (deviceInfodto) ؛} قائمة <map <integer ، long >> result = new ArrayList <map <integer ، long >> () ؛ map <string ، string> timemap = null ؛ list <map <string ، string >> timearr = new ArrayList <map ، string >> () ؛ لـ (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 (). timemap.put ("endtime" ، (result.get (j+1) .get (result.get (j+1) .keyset (). iterator (). التالي () - 1)+"") ؛} timemap.put ("hostname" ، "*") النتيجة. timemap.put ("الحالة" ، "تحذير") ؛} timearr.add (timemap) ؛}المثال أعلاه لقيمة سلسلة Java Traversing JSON هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.