2016-10-20 12 views
2

jsonオブジェクトにデータを格納しようとするとAndroid 4.4に問題があります。AndroidのJSONオブジェクトにデータを置く4.4間違った位置

JSONObject jsSimple = new JSONObject(); 
jsSimple.put("a", "1"); 
jsSimple.put("b", "2"); 
jsSimple.put("c", "3"); 
jsSimple.put("d", "4"); 

そして、私はここでの結果を得た:

を{ "A": "1"、 "C":ここで私は私のJSONにデータを置くために使用されるコードである "3"、 "d": "4"、 "b": "2"}

この問題はAndroid 4.4でのみ発生しました。私は他のバージョンでテストし、それは正常に動作します。この問題を解決する方向を教えてください。

ありがとうございます。 http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html

+0

のリストを作成し、あなたのDTOクラスを定義する場合問題 ? –

+0

キーの順番:** a、c、d、b ** ** a、b、c、d ** – Radinator

+0

JSONオブジェクトは順不同です。 –

答えて

3

ドキュメントは言う:

JsonObjectクラスは不変JSONオブジェクト値(ゼロの順序付けられていないコレクション以上の名前/値ペア)を表します。

つまり、オブジェクトのプロパティは位置ではなく名前でアクセスされ、デフォルトのシリアル化されたフォームは特定の順序を保証しません。

厳格な位置決めが配列でのみ来る:あなたの問題を解決する最も簡単な回避策がsortedKeys()メソッドを使用することで、キーによってJSONObjectキーを反復することにより、JSON文字列を生成

JSONObject jsSimple = new JSONObject(); 
jsSimple.put("a", "1"); 
jsSimple.put("b", "2"); 
jsSimple.put("c", "3"); 
jsSimple.put("d", "4"); 

これまでに必要なものを手動でコンパレータの実装も役に立ちます。

+0

チャーガヤグル: – Piyush

0

は、Google GSONが使いやすい使用することができますし、また、それはバグにコードを避けることができます、ちょうど

public class Data { 
    private String key; 
    private String value; 
public Data(String key , String value) 
{ 
this.key = key; 
this.value =value; 
} 
    public String getKey() { 
     return key; 
    } 

    public void setKey(String key) { 
     this.key = key; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    }} 

のようないくつかは何であるか、オブジェクト

Data data = new Data("a","1"); 
List<Data> dataList = new ArrayList<Data>(); 
dataList.add(data); // so on for all object 
String json = new Gson().toJson(dataList); 
関連する問題