【问题标题】:Pass an object containing key value pairs, as a value to a hashmap in Java/Android将包含键值对的对象作为值传递给 Java/Android 中的 hashmap
【发布时间】:2016-02-08 10:11:19
【问题描述】:

我正在使用 Volley Library 在我这样做的 android 中发帖

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 作为这样的值

联系方式: { 联系人姓名:“ABCD”,电话号码:“98980980980”}

我该怎么做?

我的尝试:我尝试创建一个 hashmap 并使用 jackson 将其转换并传递它,但我收到了一个错误,这是因为我将一个对象转换为 JSON 两次。

【问题讨论】:

  • 并且您应该检查您要发布的正确变量是hashMappostparams :)
  • 抱歉打错了,我已经编辑过了。感谢您的评论。 @BNK

标签: java android json hashmap android-volley


【解决方案1】:

contact键值为:

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

表示想要传递一个包含contactNamephoneNumber 作为键值对的JSONObject:

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

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

【讨论】:

  • 问:你说的是标准Android库的org.json.JSONObject吗?
  • 在这种情况下 - 竖起大拇指。一个很好的建议。简单地使用 Android Json 库是简单、高效的......并且比试图与杰克逊角力要容易得多。 PS:JSONObject is 基本上只是一个Java hashmap ...但是很容易将对象嵌套在对象中,就像你需要的一样。在 Java 对象和 JSON 文本之间进行序列化/反序列化也很容易。
  • 大家好,谢谢您的建议/解决方案,看起来这应该可行,虽然我无法验证今天是否因为它的周末和服务器关闭,我一定会回来我周一测试后的结果。干杯@paulsm4 @K(很抱歉无法输入您的完整用户名)
  • 感谢@K 提出使用 JSONObject 的建议,因为它确实简化了任务。对于那些刚刚阅读此链接的人,此链接对stackoverflow.com/questions/16286902/… 有所帮助
  • 他们是否有任何自动方式来实现上述目标?..仅表示对象?
猜你喜欢
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
相关资源
最近更新 更多