在我的Get方法中,我正在反序列化这样的数组响应 -
HttpResponse httpResponse = defaultHttpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
if (httpEntity != null) {
InputStream inputStream = httpEntity.getContent();
Header contentEncoding = httpResponse.getFirstHeader("Content-Encoding");
if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) {
inputStream = new GZIPInputStream(inputStream);
}
String resultString = convertStreamToString(inputStream); // final json string response object
if(resultString == "{}")
{
resultString = "[]";
Log.d("result", "in the condition");
}
inputStream.close();
return new GsonBuilder().create().fromJson(resultString, objectClass);
}
objectClass
正在Product[].class
所有这一切都正常,除非resultString为空(api没有返回数据)。在这种情况下,反序列化失败。我试图将resultString
更改为空数组json但条件本身不满足。
请告诉如何反序列化空的json以返回空对象(而不是null)。
答案 0 :(得分:0)
更改此部分代码:
if(resultString == "{}")
{
resultString = "[]";
Log.d("result", "in the condition");
}
为:
if(resultString.equals("{}"))
{
Log.d("result", "in the condition");
inputStream.close();
return objectClass();
}
答案 1 :(得分:0)
我打印了resultString.length()
,结果是3
。当字符串本身为{}
时,不确定为什么会这样。可能有换行符,但我不确定。因此,我将条件更改为检查长度,现在工作正常。