使用哈希映射将数据解析为JSON

时间:2018-11-29 11:56:51

标签: java android android-volley

我正在尝试将hexmaps转换为可用的json代码,但我真的不知道如何

protected Map<String, String> getParams() {
    Map<String, String>  params = new HashMap<String, String>();
    params.put("user_id", userID );
    Map<String, String>  foodOrder = new HashMap<String, String>();
    foodOrder.put("id",productID);

    foodOrder.put("item_count",numberOfItems.getText().toString());

    params.put("product", foodOrder.toString());
    Arrays.deepToString(new JSONObject[]{new JSONObject(params)});

    return params;
}

它应该看起来像这样:

{
  "user_id": 2,
  "product": {
      "id": 15,
      "item_count": 99
  }
}

但是现在我明白了:

{
  "product": "{item_count=1, id=1}", 
  "user_id": "2"
}

我正在使用Volly库将数据表单应用程序传递到服务器。

1 个答案:

答案 0 :(得分:1)

toString()方法将不会返回json,除非您已经实现了它。在您的情况下,您使用的是hashMap的toString,因此不会使用。 尝试使用Gson将地图转换为json字符串:

protected Map<String, String> getParams()
{
   Map<String, String>  params = new HashMap<String, String>();
   params.put("user_id", userID );
   Map<String, String>  foodOrder = new HashMap<String, String>();
   foodOrder.put("id",productID);
   foodOrder.put("item_count",numberOfItems.getText().toString());
   Gson gson = new Gson();
   params.put("product", gson.toJson(foodOrder));
   Arrays.deepToString(new JSONObject[]{new JSONObject(params)});
   return params;
 }