我向API发送请求并使用GSON将其转换为对象。
然后我将其传递给Bundle
并将其作为JSON
String
传递。
问题是在我通过捆绑包之前,值看起来很好,但是当我在下一个活动中收到捆绑包时,值为Null
这里似乎有什么问题?我猜测GSON
在解析信息时遇到了一些问题。
这是我在运行它之前看到的字符串键。
这是我在通过捆绑包后看到的内容
我使用以下代码将其传递给bundle:
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);=
}
注意结尾处的null
我该如何解决这个问题?如果没有任何内容,我正在考虑使用Parcelable
。
修改:
使用rest客户端应用程序的响应表单API:
" image_path":" /uploads/image/image02-%7B%7BSIZE%7D%7D-290x116.jpg"
答案 0 :(得分:1)
问题似乎是我通过bundle的对象包含了对象本身的列表,似乎GSON将问题转换回其POJO
对象的问题所以我只是抓住了列表并通过了那些而是这样:
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返回路径的错误字符串,至少这些东西在我的结尾处工作正常。