Java Json对象项顺序
我写了一些代码Java Json对象项顺序,java,json,jsp,Java,Json,Jsp,我写了一些代码 JSONArray ja = new JSONArray(); try { ResultSetMetaData metaData = rslt.getMetaData(); while ( rslt.next() ){ JSONObject jo = new JSONObject(); LinkedHashMap<String, String> jsonOrderedMap =
JSONArray ja = new JSONArray();
try {
ResultSetMetaData metaData = rslt.getMetaData();
while ( rslt.next() ){
JSONObject jo = new JSONObject();
LinkedHashMap<String, String> jsonOrderedMap = new LinkedHashMap<String, String>();
for(int i = 0 ; i < metaData.getColumnCount(); i++){
jsonOrderedMap.put(metaData.getColumnName(i+1), rslt.getString(i+1) );
}
System.out.println(jsonOrderedMap);
/* This doesn't work */
ja.put(jsonOrderedMap);
//System.out.println(ja);
}
} catch (Exception e) {
}
在将一些jsonOrderedMap放到jsonArray之后,它看起来是这样的
[{"CUSTOMER_NAME":"qweqwe","CUSTOMER_NO":"0000003124","CUSTOMER_SECTOR_ID":"611"},
{"CUSTOMER_NAME":"MAD.","CUSTOMER_NO":"0000003133","CUSTOMER_SECTOR_ID":"611"}]
正如你所看到的,顺序不同。你有办法修好它吗?我正在使用gson库。JSON对象中的字段没有任何顺序,因为它们应该通过名称(键)访问 如果需要保持订单,则必须使用JSON数组 我不明白为什么需要对命名字段进行排序,但如果确实需要,可以使用包含JSON对象字段的数组 描述如何执行此操作(感谢@Sergiomatinez的链接,它节省了我很多时间!)。保存订单。 简单的用法示例:
static ObjectMapper o = new ObjectMapper();
public static void main(String[] args) throws IOException
{
List<Map> array = new ArrayList<Map>();
Map<String, String> obj1 = new LinkedHashMap<String, String>();
obj1.put("CUSTOMER_SECTOR_ID", "Id");
obj1.put("CUSTOMER_NO", "No");
obj1.put("CUSTOMER_NAME", "Name");
array.add(obj1);
System.out.println(o.writeValueAsString(array));
}
static ObjectMapper o=new ObjectMapper();
公共静态void main(字符串[]args)引发IOException
{
列表数组=新的ArrayList();
Map obj1=新建LinkedHashMap();
obj1.put(“客户部门ID”、“ID”);
obj1.put(“客户号”、“否”);
obj1.put(“客户名称”、“名称”);
array.add(obj1);
System.out.println(o.writeValueAsString(数组));
}
Maven依赖
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.5</version>
</dependency>
org.codehaus.jackson
杰克逊地图绘制者
1.8.5
由于JSON对象本身没有顺序,因此您应该在JSON对象中使用数组来确保顺序。谢谢你的建议@SergioMartinez,但如果我确切知道类型,我可以使用你提供的链接。如果我不知道呢?我只需要输入字符串,因为您看到没有字段名。我仍在努力,但没有任何效果。是的,我在javascript部分做了与@SergioMartinez完全相同的事情,但在java中,我不知道它会首先出现在哪里。例如,您尝试创建一个datatable,在我使用的第一个字段中,复选框必须有id。但如果不进行排序,我无法确定。您可以发布用于读取JSON的代码吗?您不应该选择第一个字段,而应该选择“CUSTOMER\u SECTOR\u ID”字段。这就是JSON字段名的要点,它类似于映射中的键。如果您需要在表中显示数据,那么您必须知道数据是什么样的,包括字段的名称。但是Customer\u sector\u id字段将始终处于更改状态,我从另一个地方带来它。我将把连接字段放在第一个对象ob json上,这样我就可以以相同的顺序获得。我将此json与用户交互。
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.5</version>
</dependency>