fromJson中的空json数组

时间:2015-04-11 01:23:19

标签: android json gson

在我的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)。

2 个答案:

答案 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。当字符串本身为{}时,不确定为什么会这样。可能有换行符,但我不确定。因此,我将条件更改为检查长度,现在工作正常。