为什么Android会改变我的JSON字符串的顺序?

时间:2012-11-27 21:06:15

标签: java android json

我有一个非常简单的问题...... 在我的Android应用程序中,我正在形成一个JSON字符串以发送到我的服务器...我的代码中没有错误,但Java(或Android)将值放在我的不同顺序,我不知道为什么。 ..

我想解决这个问题,因为我需要在服务器中处理那个JSON字符串来更新我的数据库的一些表...我在服务器中的PHP代码使用我在我的应用程序中使用的相同顺序来解码JSON字符串,但由于Android(或Java)改变了顺序,我在更新表时遇到麻烦......

有什么想法吗?提前谢谢!

我在说这个:

在我的应用中:

json_data.put("id_visit", visits.getString(visits.getColumnIndexOrThrow("id_visit")));
json_data.put("id_form", visits.getString(visits.getColumnIndexOrThrow("id_form")));
json_data.put("id_establishment", visits.getString(visits.getColumnIndexOrThrow("id_establishment")));
json_data.put("id_promoter", visits.getString(visits.getColumnIndexOrThrow("id_promoter")));
json_data.put("actual_date", visits.getString(visits.getColumnIndexOrThrow("actual_date")));
json_data.put("receiver", visits.getString(visits.getColumnIndexOrThrow("receiver")));
json_data.put("observations", visits.getString(visits.getColumnIndexOrThrow("observations")));
json_data.put("gps_coordinates", visits.getString(visits.getColumnIndexOrThrow("gps_coordinates")));

在LogCat中:

{
"id_promoter":"1",
"id_establishment":"5",
"id_visit":"1",
"receiver":"brenda lopez",
"gps_coordinates":"10.4905567 -66.8710966",
"actual_date":"2012-11-27",
"id_form":"1",
"observations":"observaciones"
}

正如你所看到的,它不是同一个订单!这是为什么?

我很抱歉没有花时间检查是否其他人已经问过这个,但是我有点匆忙,所以......对不起!的xD

1 个答案:

答案 0 :(得分:4)

对象键未在JSON中排序。如果您需要特定订单,我建议您使用数组:

[
    {"id_promoter":"1"},
    {"id_establishment":"5"},
    {"id_visit":"1"},
    {"receiver":"brenda lopez"},
    {"gps_coordinates":"10.4905567 -66.8710966"},
    {"actual_date":"2012-11-27"},
    {"id_formu":"1"},
    {"observations":"observaciones"}
]

这很糟糕,但顺序是数组的用途。

另一种方法是使用所需顺序的键名定义数组。然后,您可以使用原始对象结构,但可以通过数组定义的键访问它。显然,这需要更多编码,但它也可以解决您的问题。