List转json 顺序不一致
生活随笔
收集整理的這篇文章主要介紹了
List转json 顺序不一致
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
new JSONObject()方法使返回的json格式數據的順序與list集合中的數據順序保持一致
?
原因在于json版本問題
json2.1以前源碼中new JsonOjbect()中的構建函數是
public JSONObject(){this.properties = new HashMap();}?
?
而在2.3版本后源碼為:
public JSONObject(){this.properties = new ListOrderedMap();}?
?
ListOrderedMap位于commons-collections的jar包里,與普通的map相比,ListOrderedMap的key可保持原有順序,而hashmap是無序的
?
項目需求:
? ? ? 將mysql表中的所有字段名和字段注釋,表名,表描述用json返回
? ? ?表名和秒描述在一張表中展示e_move
?
?
// 獲取所有需要導出的表名public static String getTableInfoBeanJson() {JSONArray jsonarray = new JSONArray();Connection conn = DbHelper.getConnection();ResultSet rs = null;PreparedStatement ps = null;try {ps = DbHelper.getConnection().prepareStatement("select * from e_move");rs = ps.executeQuery();while (rs.next()) {JSONObject jsonobj = new JSONObject();String tableName = rs.getString("table_name");String tableDesc = rs.getString("desc");List<ColumnBean> colList = readTableColumn(conn, tableName);jsonobj.put("target", tableName);jsonobj.put("name", tableDesc);jsonobj.put("element", colList);jsonarray.add(jsonobj);}} catch (Exception e) {e.printStackTrace();} finally {DbHelper.Close(rs, ps, conn);}return jsonarray.toString();}//獲取表中字段public static List<ColumnBean> readTableColumn(Connection conn, String tableName) {List<ColumnBean> colList = new ArrayList<ColumnBean>();ResultSet resultSet = null;try {DatabaseMetaData dbmd = conn.getMetaData();resultSet = dbmd.getTables(null, "%", "%", new String[] {"TABLE"});while (resultSet.next()) {String t1 = resultSet.getString("TABLE_NAME");ResultSet rs = dbmd.getColumns(null, "%", tableName, "%");if (t1.contains(tableName)) {while (rs.next()) {ColumnBean col = new ColumnBean();col.setName(rs.getString("REMARKS"));col.setEname(rs.getString("COLUMN_NAME"));colList.add(col);}}}} catch (Exception e) {e.printStackTrace();} finally {DbHelper.Close(resultSet, null, null);}return colList;}?
?ColumnBean.java
public class ColumnBean {private String ename; //字段名private String name; //注釋public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public String getName() {return name;}public void setName(String name) {this.name = name;}}?
注意:用json2.3版本后的,使用new JsonObject()則可以實現有序
?
?
?
?
總結
以上是生活随笔為你收集整理的List转json 顺序不一致的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5月书讯 | 哺育小平邦彦、伊藤清等一代
- 下一篇: 使用命名空间、头文件和实现文件