溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

XML在java或.NET中轉(zhuǎn)為Json的數(shù)組或?qū)ο髷?shù)據(jù)時的處理

發(fā)布時間:2020-06-18 14:45:08 來源:網(wǎng)絡(luò) 閱讀:1115 作者:niceheart 欄目:編程語言

    XML在java和.NET中轉(zhuǎn)為Json數(shù)據(jù)時會出現(xiàn)這樣一個問題,當(dāng)節(jié)點中只有一個節(jié)點數(shù)據(jù)時是轉(zhuǎn)換為對象,有多個節(jié)點則是轉(zhuǎn)為數(shù)組,為了應(yīng)對這個問題我們需要在解析的時候進(jìn)行如下的處理,不然就會報異常:

   數(shù)據(jù)1:數(shù)組格式

"Field": [
                    {
                        "@name": "APPROVE",
                        "@title": "審核人",
                        "#text": "維尼·地里"
                    },
                   {
                        "@name": "RECEIVEDTIME",
                        "@title": "任務(wù)到達(dá)時間",
                        "#text": "2014/7/31 15:30:13"
                    }
             ]

    數(shù)據(jù)2:對象形式

"Field":        {
                        "@name": "APPROVE",
                        "@title": "審核人",
                        "#text": "維尼·地里"
                    }
                                  

    同一個接口如果請求數(shù)據(jù)時可能會得到這樣的兩個數(shù)據(jù),如果用同一套解析方法去解析,那肯定會報異常的,這當(dāng)然不是我們想看見的,對吧?繼續(xù)看看是如何解決的……

    在解析方法中我們做如下判斷:

/** 解決數(shù)據(jù)是對象還是數(shù)組的方法 **/

       jb = new JSONObject(resData);

       //獲取該字段對象

       Object objectData = jb.get("Field");

       //判斷是否為數(shù)組
       if (objectData instanceof JSONArray) {// 數(shù)組
             JSONArray jarrNames = jb.getJSONArray("Field");
             for (int i = 0; i < jarrNames.length(); i++) {
                   mInfops = new ReviewPersonListInfo();
                   JSONObject jbt = jarrNames.getJSONObject(i);
                   parseObjectData(mInfops, jbt);
                   mListps.add(mInfops);
        }
       } else {// 對象
            JSONObject objName = jb.getJSONObject("Field");
            mInfops = new ReviewPersonListInfo();
            parseObjectData(mInfops, objName);
            mListps.add(mInfops);
       }

       解決問題的關(guān)鍵代碼就是紅色的兩句,只要你的代碼中如此去做了,不管他來什么樣的數(shù)據(jù)基本都不是問題,當(dāng)然如果碼友有更好的解決方式的請一起分享,謝謝!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI