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()则可以实现有序
相关推荐
在Java编程中,将List转换为JSON对象是一个常见的任务,但是有时我们可能会遇到转换后JSON对象中的元素顺序与原始List不一致的问题。这个问题通常源于JSON库的实现方式,特别是对于某些旧版本的JSON库,例如这里提到...
先判断文件的类型(excel处理有两种此处为两种通用)是.xls/.xlsx,采用Apache的POI的API来操作Excel,读取内容后保存到List中,再将List转Json(使用Linked,增删快,与Excel表顺序保持一致),Sheet表1————>List...
使用`LinkedHashMap`可以确保输出的顺序与添加时的顺序一致。通过`JSONValue.parseWithException()`方法将Map转换为JSON对象。 #### 四、总结 通过以上示例,我们可以看到在Java中进行JSON编码的不同方法。根据实际...
该代码将输出键值对,但不保证顺序一致。通过5次循环测试,可以发现,每次输出的顺序都可能不同,因为JSONObject并不保证顺序。 总而言之,Fastjson在Java环境中处理JSON数据时是不可或缺的工具,它在性能上具有...
如果JSON对象的属性顺序不一致,或者包含不可哈希的类型(如数组、函数等),则可能无法正确识别交集。 在实际开发中,为了提高性能,还可以考虑将数据结构转换为更利于查询的形式,比如使用`Map`或`Set`。在大量...
默认情况下,Java反射API(如`Field[] getDeclaredFields()`方法)返回的字段数组顺序与它们在源代码中的声明顺序一致。在某些场景下,如序列化或JSON转换,我们可能需要控制这些属性的顺序。 为了解决这个问题,...
- **JSON/XML数据交换**:学会使用JSON或XML格式进行数据交换。 #### 12. 学习构建工具和版本控制系统 - **Ant/Subversion**:熟悉Ant构建工具的使用方法,了解Subversion版本控制系统的操作。 - **敏捷开发**:...
每一个数组元素对应一个页面,顺序决定了页面在小程序中的加载顺序。例如: ```json "pages": [ "pages/index/index", "pages/logs/logs", "pages/main/main", "pages/calList/calList" ] ``` 这里,`index...
Twitter成功机器人 您可以将成功发送到您的Twitter帐户。 一切都是监视器,并且... 在config.json文件中填写任何凭据-必须按顺序填写所有内容才能正常工作! 享受 :) 如果机器人崩溃,请先运行pm2 list =>获取ID
2. **模板渲染**:在 Meteor 的Blaze模板引擎中,可以利用有序字典来确保模板渲染的顺序与数据插入的顺序一致。 3. **状态管理**:在状态管理库(如Meteor的Tracker)中,有序字典可以用来追踪和管理状态变化的顺序...
14. **Python2与Python3**:主要区别包括print语句变为函数、除法行为改变、字典迭代顺序不固定、Unicode处理改进等。 15. **int与long**:Python2中,int是32位,超过范围自动转为long,Python3中,两者合并为int...
其中,int和float是数值类型,str是字符串,bool是布尔类型,list和tuple是序列,set是无序不重复元素集,dict是键值对集合。 3. **with方法处理文件**:with语句用于自动管理资源,如打开文件。它会在完成文件操作...
2. **双向数据绑定**:得益于Ember的数据绑定机制,当用户对列表进行排序时,后端模型的数据也会实时更新,保持前端与后端的一致性。 3. **自定义样式和行为**:你可以根据项目需求自定义排序列表的外观和交互,...
在IT行业中,JavaScript(js)和C#是两种常见的编程语言...请注意,为了确保用户体验和数据一致性,排序过程中应考虑错误处理和用户反馈。同时,对于大型数据集,可能需要考虑分页、异步处理或优化排序算法以提高性能。
有序列表(Ordered List)是一种常见的数据结构,常用于呈现有顺序的信息,如步骤指南、排名或参考文献列表。在学期论文中,参考文献的排列通常按照特定的格式和顺序,如作者姓氏字母顺序、出版年份等。利用...
ZooKeeper通过ZAB协议来保证事务的顺序一致性。 #### ZooKeeper部署模式和集群规则 ZooKeeper有独立、伪集群和集群部署模式。集群最少需要3台机器以保证leader选举。 #### ZooKeeper动态添加机器、节点监听和...
例如,在 HTTP 请求中处理头字段或在序列化 JSON 数据时,保持字段顺序通常是非常重要的。 ### 4. PEP 378:格式规范中的千位分隔符 PEP 378 提出了在字符串格式化中使用千位分隔符的能力。这一特性使得开发者可以...
7. Python集合转列表排序:在Python中,`set`转换成`list`后,使用`sort()`方法会按照字母顺序对列表元素进行排序,结果是['j', 's', 'y', 'z']。 8. 计算机记忆:计算机的记忆能力来源于它的存储器,可以存储和...
Redis 不支持自动分片,需要依赖应用程序来实现一致性哈希。 2. **Memcached**:本身不具备数据冗余机制,通过成熟的哈希算法或环状算法来解决单点故障问题。 3. **MongoDB**:支持多种高可用架构,如主从模式...