Gson.fromJson()不按预期工作
问题描述:
我有一个巨大的json字符串,我想用来检索对象。 这就是为什么我使用Gson而不是通常的JsonObject作为here。Gson.fromJson()不按预期工作
这里是我的代码:
public List<ProductJavaBean> getProductsData()
{
url = "http://api.xxx/products.json";
String line = "";
Gson gson = new GsonBuilder().create();
List<ProductJavaBean> products = new ArrayList<ProductJavaBean>();
try {
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet();
URI website = new URI(url);
request.setURI(website);
HttpResponse response = httpclient.execute(request);
JsonReader reader = new JsonReader(new InputStreamReader(response.getEntity().getContent(),"UTF-8"));
reader.beginArray();
while(reader.hasNext())
{
ProductJavaBean product = gson.fromJson(reader ,ProductJavaBean.class);
products.add(product);
}
reader.endArray();
reader.close();
}
catch (Exception exc)
{
Log.e("Error retrieving products data:" , exc.getMessage());
exc.printStackTrace();
}
return products;
}
但我对fromJson方法一个奇怪的行为:
在类型的方法fromJson(字符串类)GSON不 适用于参数(JsonReader,类)
谢谢。
编辑:
这里是我进口:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.R;
import android.os.AsyncTask;
import android.util.JsonReader;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.gz.constancl.model.ProductJavaBean;
答
可以修改从
JsonReader reader = new JsonReader(new InputStreamReader(response.getEntity().getContent(),"UTF-8"));
reader.beginArray();
while(reader.hasNext())
{
ProductJavaBean product = gson.fromJson(reader ,ProductJavaBean.class);
products.add(product);
}
reader.endArray();
reader.close();
我们的代码,以
Type listType = new TypeToken<ArrayList<ProductJavaBean>>() {}.getType();
products = new Gson().fromJson(EntityUtils.toString(response.getEntity()), listType);
+1
有没有需要修改代码。导入'android.util.JsonReader'只是错误的,需要更改为'com.google.gson.stream.JsonReader'。这也是为什么这个问题被标记为重复的原因。 – reVerse 2014-09-21 09:57:04
你介意我们展示您的进口? ! – reVerse 2014-09-21 09:32:54
可能的重复http://*.com/questions/17453406/gson-with-mixed-read – 2014-09-21 09:36:01
刚刚更新了我的文章 – 2014-09-21 09:36:59