0

次のようなハッシュマップ内に1つのハッシュマップがあります

List<Map> mapList = new ArrayList<Map>();
    for (int i = 0; i < 2; i++) {
        Map iMap = new HashMap();
        iMap.put("Comment", "");
        iMap.put("Start", "0");
        iMap.put("Max", "0");
        iMap.put("Min", "0");
        iMap.put("Price", "5000.00");
        iMap.put("DetailsID", "51");    
        mapList.add(iMap);
    }

    Map mMap = new HashMap();
    mMap.put("ID", "27");
    mMap.put("ParticipantID", "2");
    mMap.put("ItemDetails", mapList);

このマップを繰り返して、そのために JSONObject を入れたい

try {

    JSONObject object = new JSONObject();

    Iterator iterator = mMap.entrySet().iterator();     

    while (iterator.hasNext()) {
        Map.Entry mEntry = (Map.Entry) iterator.next();
        String key = mEntry.getKey().toString();            
        String value = mEntry.getValue().toString();
        object.put(key, value);

    }

    Log.v(TAG, "Object : " + object);

応答は次のようになります

Object : {"ItemDetails":"[{Price=5000.00, Comment=, DetailsID=51, Min=0, Max=0, StartViolation=0}, {Price=5000.00, Comment=, DetailsID=51, Min=0, Max=0, StartViolation=0}]","ID":"27","ParticipantID":"2"}

ハッシュマップの内部リストが反復されていません

4

3 に答える 3

4

ハッシュマップの内部リストが反復されていません

それはそう。それを反復するためのコードを書いていません。ItemDetailsエントリを取得する"ItemDetails"と、リストであるキーと値が得られます。次に、それらを使用して何をしているのかを示します。

String key = mEntry.getKey().toString();            
String value = mEntry.getValue().toString();

だからあなたはただリストを呼んtoString()でいます。自分が本当にやりたいことを突き詰める必要があります。たとえば、次のことが必要な場合があります。

if (mEntry.getValue() instanceof List) {
    // Handle lists here, possibly recursively
}

おそらく、 each に再帰すること必要になることに注意してくださいMap。繰り返しますが、これを行うにはコードを記述する必要があります。基本的に、toString()それが必要なことを行うと仮定することはできません。これは、現時点で行っている仮定です。

于 2013-01-04T11:51:25.697 に答える
1
for (Map.Entry<String, String> entry : JSONObject.entrySet()) {
    // ...
}
于 2013-01-04T11:51:09.593 に答える