2015-06-12 188 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

EDIT:使用其余客户端应用程序

响应形式API:

“IMAGE_PATH”:“/上传/图像/ image02-%7B%7BSIZE%7D%7D-290x116。 jpg“

+0

尝试在你的包中加入一个测试变量,如名称“test”,值“abc”。确保你在另一端获得它。另外,请检查myModelJsonString以确保它包含您的期望。 myModel还有哪些其他方法可用?尝试访问他们,看看你得到什么。 –

+0

我已经试过这个,它工作正常。其他方法很好,比如'getName();' – AndyRoid

+0

啊,我之前看到的只是“null”。也许它是由“%”符号引起的某种编码问题?什么是字符串键?它是你编码的对象的一部分吗?或者是Gson API的一部分?我不认为这是访问捆绑包中字符串的关键,它是“my_model”... –

回答

1

问题似乎是,对象我通过包含对象列表的捆绑包本身,似乎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正在返回一个错误的字符串的路径,至少东西在我的工作很好。