在Android中接收大于字符串的JSON

在Android中接收大于字符串的JSON,android,json,androidhttpclient,Android,Json,Androidhttpclient,我是Android新手,我有一个无法通过服务器通信和JSON解决的问题: 我使用HttpClient类从服务器接收JSON对象,就像我看到的许多示例一样: //Crear un cliente por defecto HttpClient mCliente = new DefaultHttpClient(); //Indicar la url StringBuilder sb = new StringBuilder([SERVER]); //Establecer la conexión d

我是Android新手,我有一个无法通过服务器通信和JSON解决的问题:

我使用HttpClient类从服务器接收JSON对象,就像我看到的许多示例一样:

//Crear un cliente por defecto 
HttpClient mCliente = new DefaultHttpClient();

//Indicar la url
StringBuilder sb = new StringBuilder([SERVER]);

//Establecer la conexión después de indicar la url
HttpPost mPost = new HttpPost(sb.toString());

//Creamos una lista de atributos
List<BasicNameValuePair> paresNombreValor = new ArrayList<BasicNameValuePair>();

//Añadimos los elementos a la lista
paresNombreValor.add(new BasicNameValuePair("operacion", "1"));  //Operación Login
paresNombreValor.add(new BasicNameValuePair("email", stringCorreo));
paresNombreValor.add(new BasicNameValuePair("password", stringPass));

//UrlEncodedFormEntity : Codificamos la lista para el envio por post
mPost.setEntity(new UrlEncodedFormEntity(paresNombreValor));

//Ejecutamos la solicitud y obtenemos una respuesta
HttpResponse respuesta = mCliente.execute(mPost);

//Obtenemos el contenido de la respuesta
HttpEntity entity = respuesta.getEntity();

//Convertimos el stream a un String 
BufferedReader buf = new BufferedReader(new InputStreamReader(entity.getContent()));

StringBuilder sb1 = new StringBuilder();
String line = null;

while ((line = buf.readLine()) != null) {
     sb1.append(line + "\r\n");
}
res = sb1.toString();
if (res != null)
{
JSONArray resultadoJSON= new JSONArray(res);   //<-- Here is my problem
...
//Crear un cliente por defecto
HttpClient mCliente=新的DefaultHttpClient();
//指示符
StringBuilder sb=新的StringBuilder([SERVER]);
//土地所有者协会(Establecer la conexión después de indicar la url)
HttpPost mPost=新的HttpPost(sb.toString());
//阿曲布托斯酒店
List paresNombreValor=new ArrayList();
//Añadimos los elementos A la lista
添加(新的BasicNameValuePair(“操作”,“1”))//操作登录
添加(新的BasicNameValuePair(“电子邮件”,stringCorreo));
添加(新的BasicNameValuePair(“密码”,stringPass));
//UrlEncodedFormEntity:编码环境邮政编码
mPost.setEntity(新的UrlEncodedFormEntity(paresNombreValor));
//我们的请求和请求是不公平的
HttpResponse respuesta=mclient.execute(mPost);
//雷斯佩斯塔伯爵酒店
HttpEntity entity=respuesta.getEntity();
//Convertimos el stream是一个非字符串
BufferedReader buf=新的BufferedReader(新的InputStreamReader(entity.getContent());
StringBuilder sb1=新的StringBuilder();
字符串行=null;
而((line=buf.readLine())!=null){
sb1.追加(行+“\r\n”);
}
res=sb1.toString();
如果(res!=null)
{

JSONArray resultadoJSON=新JSONArray(res);//如果你想对你的进程做同样的事情,请使用
stringbuilder
而不是
string

如果你想将你的输入流转换成字符串,请使用JsonReader,它允许你从输入流中读取json也将有助于节省内存

你说的比字符串大是什么意思?在JSONArray中尝试使用JSONObject而不是JSONArrayresultadoJSON=新的JSONArray(res);大于字符串的最大大小JSON对象也有同样的问题,因为我用字符串构造它。我认为StringBuilder的最大大小与字符串类型相同。我错了吗?StringBuilder没有最大大小吗?你试过StringBuilder dude吗?或者只是想一下。对不起,我只是想一下。但是JSONArray的构造方法不能使用StringBuilder,仅字符串。在您的问题中,您在哪里使用您所说的字符串对象JSONArray resultadoJSON=new JSONArray(res)。res变量是字符串。