2014-10-10 1 views
0

Тестовый фрагмент кода так же, как нижеJSONObject (Карта CopyFrom) построить функцию работы с разным результатом между 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 phone is

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

Что случилось?

+0

Это не в моем genymotion. Какую версию genymotion и версию Android вы пытаетесь? – pcans

ответ

2

Я, наконец, воспроизвел вашу проблему на устройстве 4.1.1 Genymotion, но также на реальном физическом устройстве 4.1.1, как показано на рисунке ниже: (галактика samsung s2 работает с цианоном).

Samsung Galaxy S2 physical device

Итак, я бы назвал это поведение особенностью Genymotion. ;) Вы увидите то же поведение на эмуляторе 4.1.2 ADT.

Возможно, вы испытываете различия между версиями Android. Вы должны обрабатывать два случая, чтобы быть в безопасности.

+0

Я использую другой способ избежать этой проблемы, спасибо. Но у меня есть интерес к различным реализациям. Я читаю исходный код этого класса для Android, но понятия не имею. Не могли бы вы помочь мне указать? – jerry

+0

@pcans, Спасибо так много для этого фрагмента кода :) –