JSONObject(Map copyFrom)构造函数在Genymotion和其他仿真器之间使用不同的结果

时间:2014-10-10 03:22:55

标签: android genymotion

测试代码段如下所示

    Map<String, Object> jsonMap = new HashMap<String, Object>();
    ArrayList<Long> list = new ArrayList<Long>();
    list.add(1L);
    list.add(2L);
    jsonMap.put("list", list);
    JSONObject json = new JSONObject(jsonMap);

    JSONArray ja = new JSONArray(list);
    try {
        json.put("JSONArray", ja);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    if (json != null) {
        System.out.println(json.toString());
        return;
    }

Genymotion的输出

{"JSONArray":[1,2],"list":"[1, 2]"}

使用ADT模拟器或我的nexus 4手机

{"JSONArray":[1,2],"list":[1,2]}

会发生什么?

1 个答案:

答案 0 :(得分:2)

我终于在4.1.1 Genymotion设备上再现了你的问题,但也在4.1.1真实的物理设备上再现了你的问题,如下图所示:(三星galaxy s2运行cyanogen)。

Samsung Galaxy S2 physical device

所以,我会称这种行为为Genymotion功能。 ;) 您将在4.1.2 ADT仿真器上看到相同的行为。

您可能在Android版本之间遇到差异。你必须处理这两种情况才能保证安全。