2015-06-12 2 views
1

Я отправляю запрос до API и использую GSON для преобразования его в объект.GSON преобразование строкового значения в нуль

Затем я передаю его через Bundle и передаю его как JSONString.

Проблема заключается в том, что, прежде чем я ее через пачку значение выглядит нормально, но когда я получаю пакет в следующей операции значение затем Null

То, что кажется проблема здесь? Я предполагаю, что у GSON возникают проблемы с разбором информации.

Это то, что я вижу для строкового ключа, прежде чем запускать его через комплект.

http://XXXXXXXX.XXXXXX.com/%7B%7BSIZE%7D%7D-290x116.jpg

Это то, что я вижу, после того, как я передать его через пучок

http://XXXXXXXX.XXXXXX.com/null

Я использую следующий код, чтобы передать его через пучок:

Bundle bundle = new Bundle(); 
     Gson gson = new Gson(); 
     bundle.putString("my_model", gson.toJson(searchResult, ModelClass.class)); 
     i.putExtras(bundle); 
     startActivity(i); 

Это код, я использую, чтобы преобразовать JSON обратно к объекту:

Bundle bundle = getIntent().getExtras(); 
    if (bundle != null) { 
     String myModelJSON = bundle.getString("my_model"); 
     Gson gson = new Gson(); 
     mMyModel = gson.fromJson(myModelJSON, MyModel.class);= 
    } 

Обратите внимание на нуль в конце

Как я должен идти о фиксации этого? Я думаю об использовании Parcelable, если ничего не выйдет.

РЕДАКТИРОВАТЬ:

Форма ответа API, используя остальное приложение клиента:

"image_path": «/ загрузки/фото/image02-% 7B% 7BSIZE% 7D% 7D-290x116. JPG»

+0

Попробуйте ввести тестовую переменную в свой комплект, например, имя «test», значение «abc». Убедитесь, что вы получили его на другом конце. Кроме того, проверьте myModelJsonString, чтобы убедиться, что он содержит то, что вы ожидаете. Какие другие методы доступны на myModel? Попробуйте обратиться к ним и посмотреть, что вы получаете. –

+0

Я уже пробовал это, и он отлично работает. Другие методы работают нормально, например 'getName();' – AndyRoid

+0

А, все, что я видел раньше, было «null». Может быть, это какая-то проблема кодирования, вызванная знаками «%»? Что такое строковый ключ? Является ли это частью объекта, который вы кодируете? Или является частью API Gson? Я не думаю, что это ключ к доступу к строке в пакете, который является «my_model» ... –

ответ

1

проблема, казалось, что объект я проходил через пучок содержал списки объектов внутри себя, похоже, GSON имеет проблемы превращающего его обратно к его POJO объекта, так что я просто Grabb ред списки и прошли те вместо так:

bundle.putString("list", gson.toJson(myModelObject.getList())); 

Тогда в следующей деятельности я схватил список так:

Gson gson = new Gson(); 

// Get List 
Type typeEntityListObject = new TypeToken<List<ListObject>>(){}.getType(); 
mList = gson.fromJson(bundle.getString("list"), typeEntityListObject); 

Теперь он не возвращает Null больше, но, как кто-то указал выше API возвращает обратно неправильную строку для пути, по крайней мере, материал работает отлично на моем конце.

Смежные вопросы