【问题标题】:JSON decode issue in older android version较旧的 android 版本中的 JSON 解码问题
【发布时间】:2016-09-24 08:28:51
【问题描述】:

我面临着非常奇怪的问题,在 android 中我有一个这种类型的 hashmap 对象:

HashMap<String,  ArrayList<String>> cart = null;

这是我的购物车对象,我在其中放置购物车物品,在 android 设备版本 4.4.2 及以后版本中,此对象以这种格式正确发送到服务器:

{"6":["Veg Biryani","599.0","0.0","1"],"5":["Chiken Tanduri","599.0","0.0","2"]} 

但是,在 4.3 之前的旧版本中,它只是以这种格式发送上述对象:

{"26":"[Test, 1465.0, 0.0, 2]","5":"[Chiken Tanduri, 599.0, 0.0, 3]"}

正如我们在第二种格式中看到的,hashmap 对象值完全编码为字符串,不应该是这种情况

为了将此对象发送到服务器,只需将其转换为 JSONObject 并将其字符串化以发送到服务器。

String.valueOf(new JSONObject(cart))

有人可以指点我,上面的代码做错了什么。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 您使用的是哪个 JSON 库?
  • 您将需要迭代您的地图,旧版本似乎无法管理地图,因此将其作为对象读取,因此所有内容都设置为字符串。

标签: java android json


【解决方案1】:

问题是 Map 的构造函数只存在于 API19 之后,所以在此之前,地图被添加为 Object。

您需要迭代地图的每个元素来创建 JSON。

您当然可以使用外部库,但您可以简单地使用 UtilClass 进行转换。对于转换,有这个解决方案

https://stackoverflow.com/a/22912023/4391450

【讨论】:

    【解决方案2】:

    尝试改用这个 -

    (new JSONObject(cart)).toString();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多