1

我有一个非常简单的问题...在我的 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

4

1 回答 1

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"}
]

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

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

于 2012-11-27T21:09:16.870 回答