GSON将字符串值转换为空

时间:2015-06-12 20:08:57

标签: android json null gson

我向API发送请求并使用GSON将其转换为对象。

然后我将其传递给Bundle并将其作为JSON String传递。

问题是在我通过捆绑包之前,值看起来很好,但是当我在下一个活动中收到捆绑包时,值为Null

这里似乎有什么问题?我猜测GSON在解析信息时遇到了一些问题。

这是我在运行它之前看到的字符串键。

  

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

这是我在通过捆绑包后看到的内容

  

http://XXXXXXXX.XXXXXX.com/null

我使用以下代码将其传递给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"

1 个答案:

答案 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返回路径的错误字符串,至少这些东西在我的结尾处工作正常。