3

このコードに挿入されている json を使用したいのですが、動作が異なります。私は最初CustomerIDにそして次に欲しいのですNameが、このjsonはName最初にそして次に与えCustomerIDます。必要に応じてjsonを挿入しましたが、なぜ異なる結果が得られるのか助けてください..

    JSONObject json = new JSONObject();

    try {
        json.put("CustomerID", "069C21F1-EE87-4FB4-A129-478AEAA454FF");
        json.put("Name", "Name_" + (int) Math.random() * 1000);
} catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
4

4 に答える 4

10

これは、JSONObject の予期される動作です。その定義では、次のように述べています。

名前と値のペアの順序付けられていないセットとしてのオブジェクト

ただし、注文したい場合は次のようにします。

1. prepare a LinkedHashMap object with elements

2. convert it to JSONObject

例:

Map obj = new LinkedHashMap();
obj.put("a", "String1");
obj.put("b", new Integer(1));
obj.put("c", new Boolean(true));
obj.put("d", "String2");
JSONObject json = new JSONObject(obj);

編集:

このライブラリをダウンロードしてください:

https://github.com/douglascrockford/JSON-java

プロジェクトの新しいパッケージにすべてのファイルを保存します

org.json.JSONObjectを使用する代わりに、ダウンロードしたライブラリから追加したyour.package.JSONObjectを使用します。

JSONObject.javaファイルを開き、コンストラクターでHashMap()LinkedHashMap()に変更します。

public JSONObject(Map map)
于 2012-10-01T11:31:56.600 に答える
1

その名前を CustomerID 行の前に置いて満足することはできますが、それはまったく違いはありません。json からのデータはキーと値のペアの形式で抽出されるためです。配置された順序とは無関係です。

于 2012-10-01T11:15:48.670 に答える
0

累積()を使用できます

Android デベロッパー リファレンスを参照してください

于 2013-07-01T10:35:39.613 に答える
0

ここで役立つ答え

あなたの友達ならGson。これにより、順序付けされたマップが順序付けられた JSON 文字列に出力されます。

私は最新バージョンの Gson (2.3.1) を使用しました。この投稿の下部にある次のオプションからダウンロードできます。

import java.util.LinkedHashMap;
import java.util.Map;

import com.google.gson.Gson;

public class OrderedJson {
    public static void main(String[] args) {
        // Create a new ordered map.
        Map<String,String> myLinkedHashMap = new LinkedHashMap<String, String>();

        // Add items, in-order, to the map.
        myLinkedHashMap.put("1", "first");
        myLinkedHashMap.put("2", "second");
        myLinkedHashMap.put("3", "third");

        // Instantiate a new Gson instance.
        Gson gson = new Gson();

        // Convert the ordered map into an ordered string.
        String json = gson.toJson(myLinkedHashMap, LinkedHashMap.class);

        // Print ordered string.
        System.out.println(json); // {"1":"first","2":"second","3":"third"}
    }
}

依存関係オプション Maven

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.3.1</version>
</dependency>

グラドル

compile 'com.google.code.gson:gson:2.3.1'

または、Maven Centralにアクセスして、その他のダウンロード オプションを確認することもできます。

于 2016-06-15T20:15:34.183 に答える