2015-11-07 53 views
2

我使用凌空图书馆在android系统的,我在第二个参数做到这一点传递一个包含键值对的对象,作为一种价值在Java/Android的一个HashMap

JsonObjectRequest postRequest = new JsonObjectRequest(URL, new JSONObject(hashMap)); 

此处发布新的JsonObjectRequest我将hashmap转换成JSONObject。

下面是我的HashMap

Map<String, Object> postparams = new HashMap<String, Object>() 
     postparams.put("protocol", "A"); 
     postparams.put("service_type", "B"); 
     postparams.put("access_id",accessID); 
     postparams.put("contact", contactDetails); 

的接触式按键有一个嵌套JSON作为这样

接触的值:

{ “98980980980” 联系人姓名: “ABCD”,phoneNumber的}

我该怎么做?

我尝试:我试图创建一个HashMap和杰克逊将它,并将它传递,但我得到了它,因为我的对象转换为JSON的两倍,预计错误。

+0

你应该检查你要发布正确的变量是'hashMap'或'postparams' :) – BNK

+0

对不起,这是我编辑它的错字。感谢您的评论。 @BNK –

回答

5

由于contact键值为:

{ contactName: "ABCD", phoneNumber: "98980980980" } 

手段想传递一个JSONObject含有contactNamephoneNumber作为键值对:

JSONObject json=new JSONObject(); 
json.put("contactName", contactDetails.getcontactName()); 
json.put("phoneNumber", contactDetails.getphoneNumber()); 

... 
postparams.put("contact", json.toString()); 
+0

问:你在谈论标准的Android库[org.json.JSONObject](http://developer.android.com/reference/org/json/JSONObject.html)吗? – paulsm4

+0

@ paulsm4:是的right –

+0

在这种情况下 - 竖起大拇指。一个很好的建议。简单地使用Android Json库很简单,高效......并且比试图与杰克逊搏斗更容易。 PS:一个JSONObject *基本上只是一个Java哈希映射...但是很容易在对象中嵌套对象,就像你需要的那样。在Java对象和JSON文本之间序列化/反序列化也很容易。 – paulsm4

相关问题