今天使用json-lib的xml轉json功能時,有兩種類型數據格式會出現不一樣的結果sql
1、帶製表符的xml數據格式json
這種格式在嵌套格式數據時,轉換後的數據會將嵌套中一級的去掉,以下面的代碼會httpsql去掉併發
下面數據的第一個childrens有兩個子節點,第二個childrens有一個節點工具
<?xml version="1.0" encoding="UTF-8"?> <root> <https> <http> <!-- URL --> <url></url> <!-- 請求開始時間 --> <starttime>2</starttime> <!-- 用戶代理 --> <useragent>3</useragent> <!-- 請求次數 --> <httpreqnum>4</httpreqnum> <!-- 耗時 --> <timenum>5</timenum> <!-- 最大併發 --> <concurrencynum>6</concurrencynum> <!-- Jdbc執行數 --> <jdbcexenum>7</jdbcexenum> <!-- Jdbc出錯數 --> <jdbcerrornum>8</jdbcerrornum> <!-- Jdbc時間 --> <jdbctime>9</jdbctime> <!-- 事務提交數 --> <commitnum>10</commitnum> <!-- 事務回滾數 --> <rollbacknum>11</rollbacknum> <!-- 讀取行數 --> <readnum>12</readnum> <!-- 更新行數 --> <updatenum>13</updatenum> <!-- 請求IP --> <ipaddr>14</ipaddr> <!-- 登陸名稱 --> <loginname>15</loginname> <!-- 登陸帳戶 --> <loginusername>16</loginusername> <childrens> <httpsql> <!-- sql語句 --> <sql>1</sql> <!-- 耗時 --> <exesqltime>2</exesqltime> </httpsql> <httpsql> <!-- sql語句 --> <sql>3</sql> <!-- 耗時 --> <exesqltime>4</exesqltime> </httpsql> </childrens> </http> <http> <!-- URL --> <url>1</url> <!-- 請求開始時間 --> <starttime>2</starttime> <!-- 用戶代理 --> <useragent>3</useragent> <!-- 請求次數 --> <httpreqnum>4</httpreqnum> <!-- 耗時 --> <timenum>5</timenum> <!-- 最大併發 --> <concurrencynum>6</concurrencynum> <!-- Jdbc執行數 --> <jdbcexenum>7</jdbcexenum> <!-- Jdbc出錯數 --> <jdbcerrornum>8</jdbcerrornum> <!-- Jdbc時間 --> <jdbctime>9</jdbctime> <!-- 事務提交數 --> <commitnum>10</commitnum> <!-- 事務回滾數 --> <rollbacknum>11</rollbacknum> <!-- 讀取行數 --> <readnum>12</readnum> <!-- 更新行數 --> <updatenum>13</updatenum> <!-- 請求IP --> <ipaddr>14</ipaddr> <!-- 登陸名稱 --> <loginname>15</loginname> <!-- 登陸帳戶 --> <loginusername>16</loginusername> <childrens> <httpsql> <!-- sql語句 --> <sql>3</sql> <!-- 耗時 --> <exesqltime>4</exesqltime> </httpsql> </childrens> </http> </https> </root>
轉換後的結果url
[[{"url":[],"starttime":"2","useragent":"3","httpreqnum":"4","timenum":"5","concurrencynum":"6","jdbcexenum":"7","jdbcerrornum":"8","jdbctime":"9","commitnum":"10","rollbacknum":"11","readnum":"12","updatenum":"13","ipaddr":"14","loginname":"15","loginusername":"16","childrens":[{"sql":"1","exesqltime":"2"},{"sql":"3","exesqltime":"4"}]},{"url":"1","starttime":"2","useragent":"3","httpreqnum":"4","timenum":"5","concurrencynum":"6","jdbcexenum":"7","jdbcerrornum":"8","jdbctime":"9","commitnum":"10","rollbacknum":"11","readnum":"12","updatenum":"13","ipaddr":"14","loginname":"15","loginusername":"16","childrens":[{"sql":"3","exesqltime":"4"}]}]]
2、壓縮後的xml格式數據格式代理
使用壓縮工具將xml數據壓縮成爲一行後,轉換的結果code
[[{"url":[],"starttime":"2","useragent":"3","httpreqnum":"4","timenum":"5","concurrencynum":"6","jdbcexenum":"7","jdbcerrornum":"8","jdbctime":"9","commitnum":"10","rollbacknum":"11","readnum":"12","updatenum":"13","ipaddr":"14","loginname":"15","loginusername":"16","childrens":[{"sql":"1","exesqltime":"2"},{"sql":"3","exesqltime":"4"}]},{"url":"1","starttime":"2","useragent":"3","httpreqnum":"4","timenum":"5","concurrencynum":"6","jdbcexenum":"7","jdbcerrornum":"8","jdbctime":"9","commitnum":"10","rollbacknum":"11","readnum":"12","updatenum":"13","ipaddr":"14","loginname":"15","loginusername":"16","childrens":{"httpsql":{"sql":"3","exesqltime":"4"}}}]]
區別在於childrens的結果,壓縮後轉換會出現httpsql的節點,先記錄,後續再查看源碼xml