我试图从Web服务获取json响应并将其放入arraylist中。然后我想让arraylist进入Recyclerview。我正在使用asynctask在后台执行此操作。 Web服务的响应是json数组。
import java.io.IOException;
import java.nio.ByteBuffer;
public class Q45235042 {
public static String toEbcdic( String strToConvert ) throws IOException {
String[] test = strToConvert.split( "(?<=\\G..)" );
ByteBuffer sb = ByteBuffer.allocate( test.length );
for ( String s : test )
sb.put( (byte) Short.parseShort( s, 16 ) );
return new String( sb.array(), "CP1047");
}
public static void main( String[] args ) throws IOException {
System.out.println( toEbcdic( "C120C2" ) );
}
}
这是来自网络服务的gson响应:
答案 0 :(得分:0)
您需要使用某些库或您自己使用Android中的JSON类来解析JOSN响应。 谷歌可以为此提供示例。 一个自己做的例子:
//Convert response string to JOSN array
JSONArray json = new JSONArray(responseText);
然后你需要迭代这个数组来从中获取/提取相应的数据。返回此解析数据以在onPostExecute
中获取此解析数据,从onPostExecute
您可以更新列表适配器或对UI进行任何更新。
您可以参考this
答案 1 :(得分:0)
private class AsyncCallWS extends AsyncTask<Void, Void, ArrayList<Chef>>{
@Override
protected void onPreExecute() {
}
@Override
protected ArrayList<Chef> doInBackground(Void... params) {
ArrayList<Chef> data= new ArrayList<>();
SoapObject soapObject = new SoapObject(Conexion.NAMESPACE, Conexion.METHOD_NAME_CHEFS_CERCA);
soapObject.addProperty("idUser", Integer.valueOf(5));
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(soapObject);
HttpTransportSE httpTransportSE = new HttpTransportSE(Conexion.URL);
try {
httpTransportSE.call(Conexion.SOAP_ACTION_TPNAME, envelope);
String resultado = envelope.getResponse().toString();
JSONObject json = new JSONObject(resultado);
nombreChef=json.getString("nombre_chef");
ratingChef=json.getDouble("rating");
//IM NOT SURE HOW TO PUT THE ARRAY RESPONSE INTO ARRAYLIST????
data.add(new Chef(12,nombreChef,"Riuos","21","Jr los belepos",12,"Delivery",ratingChef.toString(),"Activo"));
}
catch (Exception e) {
Log.e("Estacion", e.getMessage());
//result = "0";
}
return data;
}
@Override
protected void onPostExecute(ArrayList<Chef> result) {
super.onPostExecute(result)
// your result.(ArrayList<Chef>)
}
再次检查你的json解析。