2012-11-27 37 views
1

我有一個非常簡單的問題... 在我的Android應用我正在形成一個JSON字符串發送到我的服務器......有我的代碼中沒有錯誤,但Java(或Android)放值在不同的順序我的,我不知道爲什麼...爲什麼Android更改我的JSON字符串的順序?

我想解決這個問題,因爲我需要處理,在服務器的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

訂單爲什麼重要? – Rawkode

+1

元素的順序不是json標準的一部分 –

+0

我猜你只關心你在它上面寫的你自己的json解析器在PHP中的順序b/c嗎?只需使用['json_decode'](http://php.net/manual/en/function.json-decode.php)。 – grossvogel

回答

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

這是毛病,但秩序是陣列的目的。

另一種方法是在所希望的順序鍵名定義一個數組。然後,您可以使用原始對象結構,但可以通過數組定義的鍵訪問它。顯然,這需要更多的編碼,但它也可以解決您的問題。

相關問題