2016-05-30 12 views
0

こんにちは私はマップをサーバーに送信する必要があり、サーバーはその情報を取得します。私は私が必要な文字列をCONCATし、それを解析して、マップに変換ここAndroidのマッピングが機能しません

String user = "{ 'id':" + userId +","+"'response':{'id':"+userId+",'access':"+"'"+name+":"+key+"'"+"}}"; 

     Map<String, Object> userMap = new Gson().fromJson(user, new TypeToken<HashMap<String, Object>>() {}.getType()); 
     Set<String> keys = userMap.keySet(); 
     for (String i:keys){ 
      Log.d("user",i+" "+userMap.get(i)); 
     } 

を最初のマッピングのためのコードのツーピースを持つ(名前とキーが変数です)されています。このコードはうまくいきました。そして、コードの私の第2のセットは、サーバーがこのコードを受け付けていません意味こと、

String user1 = "{id="+userId+", access="+""+name+":"+key+""+"}"; 
     Map<String,Object> tuc = new HashMap<>(); 
     tuc.put("id",userId); 
     tuc.put("access",""); 
     Set<String> key = tuc.keySet(); 
     for (String i:key){ 
      Log.d("user",i+" "+tuc.get(i)); 
     } 

このコードは動作していないです。しかし、キーの値のペアを出力すると、結果は両方のコードで同じになります。私の鉛はコードの最初の部分を使用するのが好きではありません。なぜなら、私は過去2日間このことに打たれています。ありがとうございます。

答えて

0

Javaでは、HashMapは<key, value>のペアのみを受け入れることができます。あなたのケースでは{key1:value1, key2:value2, ...}形式のJsonのようなものではありません。

したがって、形式を{key1:value1, key2:value2, ...}から<key, value>に変更する場合は、私の提案は、value2, value3, ...を値としてStringのようなオブジェクトに組み込み、value1をキーにしています。

詳細はhttps://docs.oracle.com/javase/7/docs/api/java/util/HashMap.htmlを参照してください。

+0

ありがとうございます。キー値 "id"からuserIdを取得するため、これは機能しません。 "id"と "access"をキーとして言及することは非常に重要です。 – Karthik

+0

最初のコード "access" "id" .....それは受け入れますが、2番目のコード "access"のために: "{" id "....セミコロンの後に二重引用符があることだけが分かります – Karthik

+0

申し訳ありませんが、あなたのコードの一部です。私の現在の答えは正しいですか? –

関連する問題