首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android解析json报空指针错误

2012-04-15 
android解析json报空指针异常。代码如下Java codepackage com.student.activityimport java.net.URIimpor

android解析json报空指针异常。
代码如下

Java code
package com.student.activity;import java.net.URI;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import org.json.JSONArray;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class StuManagerActivity extends Activity {    private static final String TAG = "StuManagerActivity";    private List<HashMap<String, Object>> list = null;    private HashMap<String, Object> stu = null;    private ListView listView = null;    private static String url = "http://192.168.1.103:8080/StudentServer/getJsonStu.action";    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        listView = (ListView) findViewById(R.id.stuList);                getServerData(url);    }    public void getServerData(String url) {        // 提供默认的HttpClient实现        HttpClient client = new DefaultHttpClient();        HttpPost request;        try {            request = new HttpPost(new URI(url));            HttpResponse response = client.execute(request);            // 判断请求是否成功            if (response.getStatusLine().getStatusCode() == 200) {                HttpEntity entity = response.getEntity();                if (entity != null) {                    String out = EntityUtils.toString(entity, "UTF-8");                    Log.i(TAG, out);                    JSONArray jsonArray = new JSONArray(out);                    System.out.println(jsonArray.length());                    list = new ArrayList<HashMap<String, Object>>();                    System.out.println(list.size());                                        for (int i = 0; i < jsonArray.length(); i++) {                        JSONObject jsonObject = (JSONObject) jsonArray.get(i);                        String stuName = jsonObject.getString("studentName");                        String stuSex = jsonObject.getString("stuSex");                        String phone = jsonObject.getString("phone");                                                stu.put("stuName", stuName);                        stu.put("stuSex", stuSex);                        stu.put("phone", phone);                                                System.out.println(stuName);                                                list.add(stu);                        System.out.println(list.size()+"");                    }                    SimpleAdapter adapter = new SimpleAdapter(                            StuManagerActivity.this, list, R.layout.item,                            new String[] { "stuName", "stuSex", "phone" },                            new int[] { R.id.stuName, R.id.stuSex, R.id.phone });                                        listView.setAdapter(adapter);                }            }        } catch (Exception e) {            e.printStackTrace();            Log.e(TAG, e.toString());            Toast.makeText(StuManagerActivity.this, "获取数据失败!", Toast.LENGTH_LONG).show();        }    }}




[解决办法]
首先 我觉得你客户端不该把UI线程和网络线程混在一起,希望能写成异步的
另外 你的json在网页显示是乱码,无非是编码的问题
------解决方案--------------------


我怎么没看到你的stu对象是在哪里new的?乱码是编码问题。

探讨
代码如下
Java code

package com.student.activity;

import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache……

热点排行