Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中解析Json对象?_Java_Android_Json - Fatal编程技术网

Java 在android中解析Json对象?

Java 在android中解析Json对象?,java,android,json,Java,Android,Json,我正在开发一个应用程序,我必须从服务器接收数据,我成功地读取数据。在这里我遇到了一个问题,我从AsyncTask中编写的服务器代码接收数据,并将数据从AsyncTask发送到我的活动,在这里我只发送三个数据中的一个,我的json对象有三个对象。我可以在AsyncTask中获取三个对象,但不能在活动中获取 我的异步任务 public class ReceivingLatLongAsync extends AsyncTask<Void, Void, Void> { private P

我正在开发一个应用程序,我必须从服务器接收数据,我成功地读取数据。在这里我遇到了一个问题,我从AsyncTask中编写的服务器代码接收数据,并将数据从AsyncTask发送到我的活动,在这里我只发送三个数据中的一个,我的json对象有三个对象。我可以在AsyncTask中获取三个对象,但不能在活动中获取

我的异步任务

 public class ReceivingLatLongAsync extends AsyncTask<Void, Void, Void> {

private ProgressDialog pDialog;

Context mContext;

JSONArray jsonArryDetails=null;

public static final String DETAILS = "locations";
public static final String LAT = "lat";
public static final String LNG = "lng";
public static final String ADDRESS = "address";
public static final String CTIME = "ctime";

private String lat1;
private String lng1;
private String address1;
private String time1;


public ReceivingLatLongAsync(Context context){

    this.mContext = context;

}
@Override
protected void onPreExecute() {
    // TODO Auto-generated method stub
    super.onPreExecute();
    pDialog = new ProgressDialog(mContext);
     pDialog.setMessage("Please wait...");
     pDialog.setCancelable(false);
     pDialog.show();

}

@Override
protected Void doInBackground(Void... params) {
    // TODO Auto-generated method stub

    ServiceHandler serviceHandler= new ServiceHandler();

    String jSonString = `serviceHandler.makeServiceCall
         (TrafficConstants.RECIEVE_LATLON_POL_URL, ServiceHandler.POST);`

    Log.e("Response: ", "> " + jSonString);

    if(jSonString != null){

        try {
            JSONObject jsonObject = new JSONObject(jSonString);

            jsonArryDetails = jsonObject.getJSONArray(DETAILS);

            for(int i = 0;i<jsonArryDetails.length();i++){

                JSONObject mapDetails =        
                          jsonArryDetails.getJSONObject(0);

                lat1 = mapDetails.getString(LAT);
                lng1 = mapDetails.getString(LNG);
                address1 = mapDetails.getString(ADDRESS);
                time1 = mapDetails.getString(CTIME);


                Log.e("ADDRESS1", address1);
                Log.e("TIME2",time1);



            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    return null;
}
@Override
protected void onPostExecute(Void result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    pDialog.dismiss();

    Intent intent = new Intent(mContext,GetLatLongForTPActivity.class);
    intent.putExtra("LAT", lat1);
    intent.putExtra("LNG", lng1);
    intent.putExtra("ADDRESS", address1);
    intent.putExtra("time",time1);

    mContext.startActivity(intent);
}

    }

因为它是一个jsonArray,现在只发送最后一个对象而不是entier数组

因为它是一个jsonArray,现在只发送最后一个对象而不是entier数组

更改此设置

 JSONObject mapDetails =        
                      jsonArryDetails.getJSONObject(0);

你必须加上这样的东西

   ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

   for(int i = 0;i<jsonArryDetails.length();i++){
            HashMap<String, String> map = new HashMap<String, String>();
            JSONObject mapDetails =        
                      jsonArryDetails.getJSONObject(i);

            lat1 = mapDetails.getString(LAT);
            lng1 = mapDetails.getString(LNG);
            address1 = mapDetails.getString(ADDRESS);
            time1 = mapDetails.getString(CTIME);
            map.put(LAT, lat1);
            map.put(LNG, lg1);
            map.put(ADDRESS, address1 );
            map.put(CTIME, time1 );

            mylist.add(map);

        }
ArrayList mylist=new ArrayList();
对于(int i=0;i改变此值

 JSONObject mapDetails =        
                      jsonArryDetails.getJSONObject(0);

你必须加上这样的东西

   ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

   for(int i = 0;i<jsonArryDetails.length();i++){
            HashMap<String, String> map = new HashMap<String, String>();
            JSONObject mapDetails =        
                      jsonArryDetails.getJSONObject(i);

            lat1 = mapDetails.getString(LAT);
            lng1 = mapDetails.getString(LNG);
            address1 = mapDetails.getString(ADDRESS);
            time1 = mapDetails.getString(CTIME);
            map.put(LAT, lat1);
            map.put(LNG, lg1);
            map.put(ADDRESS, address1 );
            map.put(CTIME, time1 );

            mylist.add(map);

        }
ArrayList mylist=new ArrayList();

for(int i=0;ifor循环中更改索引:

        for(int i = 0;i<jsonArryDetails.length();i++){

            JSONObject mapDetails =jsonArryDetails.getJSONObject(i);
            //etc                                                ^ //change here

for(int i=0;ifor循环中更改索引:

        for(int i = 0;i<jsonArryDetails.length();i++){

            JSONObject mapDetails =jsonArryDetails.getJSONObject(i);
            //etc                                                ^ //change here

对于(int i=0;i您需要创建一个类来存储您正在使用的四个字段(lat、long、address、time),使该对象成为一个寓言,您可以使用以下示例:;
之后,您可以使用以下方法将阵列连接到目标:

intent.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)

intent.putParcelableArrayListExtra(字符串名称,ArrayList您需要创建一个类来存储您正在使用的四个字段(lat、long、address、time),使该对象具有寓言性,您可以使用以下示例:;
之后,您可以使用以下方法将阵列连接到目标:

intent.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)

intent.putParcelableArrayListExtra(字符串名称,ArrayListtry startActivity(intent);而不是mContext.startActivity(intent);必须发送一个对象数组,使用这些对象创建一个类并发送该数组,要发送数组,必须实现
parcelable
要解析选项,请尝试Gson:try startActivity(intent);不是mContext。开始触觉(意图);您必须发送一个对象数组,使用这些对象创建一个类并发送该数组,要发送数组,您必须实现
parcelable
用于解析选项,请尝试Gson:我必须将所有对象发送到activity是否可能?@Durga完成此操作后,您需要查看将列表发送到activity的步骤谢谢您如何将此数组列表发送到activity我的活动,如何读取该列表否,使用此所有横向长度值我要在mapi上显示位置我必须将所有对象发送到“活动”是否可能?@Durga执行此操作后,您需要查看将列表发送到“活动”的步骤谢谢您如何将此数组列表发送到我的活动,如何读取该列表否,使用此所有横向长度值我要显示位置在mapyes上,最好的方法是使用get/set函数,在第一个活动中设置数组,并在第二个活动中使用get,这样就可以解决“通过意图发送数据”的问题未直接指出的问题。是的,最好是使用get/set函数,在第一个活动上设置数组,并在第二个活动中使用get,这样就可以解决未直接指出的“通过意图发送数据”问题。