91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

解決使用json-lib包實現xml轉json時空值被轉為空中括號的問題

發布時間:2020-08-27 14:17:40 來源:腳本之家 閱讀:166 作者:wdc 欄目:編程語言

項目數據庫中出現許多值為中括號[]的數據,測試報了bug,經過排查是因為使用了json-lib 的jar包導致。json-lib在將xml字符串轉換為json格式的過程中,會將空值轉化了[],現在就簡單的總結一下,兩種xml轉json包的異同。可能是因為此類問題比較初級,所以網上雖然有人提出此類問題,但是沒有發現回答。為了方便像我一樣的初級程序員能盡快的發現和解決問題,寫了這篇博文。

網上能查到的xml轉json的jar包大部分是net.sf.json-lib,這個包在json解析方面應用較多,但是缺點是需要的依賴包比較多。但是這里只講他xml轉json。

1、net.sf.json-lib 轉json;

JSON json =xmlSerializer.read(xml);

這個方法出現的問題便是會將空值轉化為[],使用 json.get(value).getclass 獲取[]的類型可以發現:json-lib將空值識別為了jsonarray類型而不是string,而jsonarray的tostring方法被重寫為[,,,,]

如果依然要使用這個方法,可以做如下修改,在使用getString()方法獲取由xml轉化的json對象值時,先判斷類型是是否為string再獲取。

json.get(value) instanceof String ? json.getString(value):"" 

2、org.json 轉json :

org.json.JSONObject jsonObj = org.json.XML.toJSONObject(xml); 

不會生成[]值,但是會保留根標簽(標準XML文檔有且只有一個根標簽,所謂的根標簽就是一對<根標簽></根標簽>包含其他全部標簽),而一般根標簽對數據而言是沒有意義的,所以你如果需要做處理的話

jsonObj.get("root"); 

下面是測試代碼:

package com.pptv.ppvision.util; 
 
import org.json.XML; 
import net.sf.json.JSONObject; 
import net.sf.json.xml.XMLSerializer; 
 
public class Xml2JsonTest { 
  private static String xml = "<root><user><name>weless</name><sex></sex></user></root>"; 
  public static void main(String[] args) { 
    testOrgJSon(); 
    testXmlSerializer(); 
  } 
   
  public static void testOrgJSon(){ 
    org.json.JSONObject jsonObj = XML.toJSONObject(xml); 
    System.out.println("org.json xml2json:"+jsonObj); 
    org.json.JSONObject user = jsonObj.getJSONObject("root").getJSONObject("user");//org.json需去除根標簽 
    System.out.println("用戶名:"+user.getString("name")); 
    System.out.println("性別:"+user.getString("sex")); 
  } 
   
  public static void testXmlSerializer(){ 
    XMLSerializer xmlSerializer = new XMLSerializer(); 
    JSONObject jsonObject = (JSONObject)xmlSerializer.read(xml); 
    System.out.println("json-lib xml2json result: "+jsonObject); 
    JSONObject user = jsonObject.getJSONObject("user"); 
    System.out.println("用戶名:"+user.get("name")); 
    System.out.println("性別:"+(user.get("sex") instanceof String ? user.getString("sex"):"")); 
  } 
} 

這里為大家提供了兩種方法

一種是使用getString()方法獲取由xml轉化的json對象值時,先判斷類型是是否為string再獲取

一種是org.json

大家可以根據自身需求選擇使用哪種方法

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寿光市| 陇西县| 抚顺县| 卢氏县| 临澧县| 嵊州市| 泽州县| 甘德县| 泰和县| 和龙市| 蓬溪县| 松溪县| 靖远县| 东山县| 织金县| 门头沟区| 通山县| 武山县| 邵武市| 隆子县| 商水县| 石景山区| 五寨县| 平乐县| 海丰县| 上思县| 雷山县| 晋州市| 新郑市| 五寨县| 安顺市| 天台县| 湟源县| 隆回县| 闸北区| 磐安县| 泽库县| 囊谦县| 凉城县| 墨玉县| 昆明市|