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

それは大雑把ですが、順序は配列の目的です。

もう 1 つの方法は、キー名を目的の順序で並べた配列を定義することです。その後、元のオブジェクト構造を使用できますが、配列によって定義されたキーを介してアクセスできます。これには明らかにより多くのコーディングが必要ですが、問題を解決することもできます。

于 2012-11-27T21:09:16.870 に答える