我有一个非常简单的问题...... 在我的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
答案 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"}
]
这很糟糕,但顺序是数组的用途。
另一种方法是使用所需顺序的键名定义数组。然后,您可以使用原始对象结构,但可以通过数组定义的键访问它。显然,这需要更多编码,但它也可以解决您的问题。