激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - 解決使用json-lib包實現xml轉json時空值被轉為空中括號的問題

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

2021-04-12 09:34rain_xia JAVA教程

網上能查到的xml轉json的jar包大部分是net.sf.json-lib,但是JSON json =xmlSerializer.read(xml); 方法會出現將空值轉化為[]的問題,下面為大家提供兩種解決方法

項目數據庫中出現許多值為中括號[]的數據,測試報了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;

?
1
JSON json =xmlSerializer.read(xml);

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

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

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

2、org.json 轉json :

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

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

?
1
jsonObj.get("root");

下面是測試代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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

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

原文鏈接:http://blog.csdn.net/rain_xia_/article/details/51065135

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久黄色影院 | 亚洲一级片免费观看 | h久久| 天天夜夜草 | 国产免费一级淫片a级中文 99国产精品自拍 | 少妇淫片免费一级毛片 | 中国av免费观看 | 成人免费毛片片v | 国产一国产精品一级毛片 | 国产精品v片在线观看不卡 国产另类一区 | 鸳鸯谱在线观看高清 | 亚洲成人中文字幕在线 | 精品麻豆cm视频在线看 | 天天草天天操 | 久久国产精品91 | 激情视频免费看 | 日韩毛片网 | 男人午夜小视频 | 成人在线精品视频 | 国产亚洲自拍一区 | 精品国产乱码久久久久久久久 | 中文字幕免费在线看 | 久久久久国产成人免费精品免费 | 新久草在线视频 | 成人福利视频网站 | 91成人免费在线观看 | chinese xvideos gay| 看片一区 | 国产一区二区三区在线观看视频 | 欧美综合在线观看 | 精品免费在线视频 | 久久人人人 | 国内成人自拍视频 | 日韩精品 | 成人一区二区在线观看视频 | 欧美a区| 深夜福利视频绿巨人视频在线观看 | 亚洲网站在线观看 | 看毛片电影 | 欧美中文字幕一区二区 | 黄色成人在线播放 |