android的从服务器取得json对象进行解析

先写服务器端的代码,先写一个person对象

public class Person {
    private int id;
    private String name;
    private String address;
    public Person() {
        // TODO Auto-generated constructor stub
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + ", address=" + address
                + "]";
    }
    public Person(int id, String name, String address) {
        super();
        this.id = id;
        this.name = name;
        this.address = address;
    }
 
}

初始化一下person对象

public class JsonService {
    //一个person对象
    public Person getPerson(){
        Person person=new Person(1001,"hang","suqian");
        return person;
    }
 
}
服务器端json的工具类

public class JsonToos {
    public static String CreateJsonString(String key,Object value){
        //生成json的string
        JSONObject jsonObject=new JSONObject();
         jsonObject.put(key,value);
          return jsonObject.toString();
         
    }
 
}
服务端的servlet

public class JsonAction extends HttpServlet {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private JsonService service;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public JsonAction() {
        super();
        // TODO Auto-generated constructor stub
    }
 
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        doPost(request, response);
    }
 
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        PrintWriter out=response.getWriter();
         
        String jsonString=JsonToos.CreateJsonString("person",service.getPerson());
        out.println(jsonString);
        out.flush();
        out.close();
     
    }
    @Override
    public void init() throws ServletException {
        service=new JsonService();
    }
 
}



注意

<uses-permission android:name="android.permission.INTERNET"/>

这个一定要加的,网络访问权限


定义person的对象同上

下面是http的工具类,主要是http访问,获取json的字符串

public class HttpUtils {
    public static String getJsonContent(String path){
        try {
            URL url=new URL(path);
            HttpURLConnection connection=(HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(3000);
            connection.setRequestMethod("GET");
            connection.setDoInput(true);
            int code=connection.getResponseCode();
            if(code==200){
                return changeInputString(connection.getInputStream());
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return "";
    }
 
    private static String changeInputString(InputStream inputStream) {
         
        String jsonString="";
        ByteArrayOutputStream outPutStream=new ByteArrayOutputStream();
        byte[] data=new byte[1024];
        int len=0;
        try {
            while((len=inputStream.read(data))!=-1){
                outPutStream.write(data, 0, len);
            }
            jsonString=new String(outPutStream.toByteArray());
         
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return jsonString;
    }
 
}

下面为解析json字符串,把值赋给person对象

public class JsonTools {
 
    public static Person getPerson(String key, String jsonString) {
        Person person = new Person();
         
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            JSONObject personObject = jsonObject.getJSONObject(key);
 
            person.setId(personObject.getInt("id"));
            person.setName(personObject.getString("name"));
            person.setAddress(personObject.getString("address"));
        } catch (Exception e) {
            // TODO: handle exception
        }
        return person;
    }
 
    public static List<Person> getPersons(String key, String jsonString) {
        List<Person> list = new ArrayList<Person>();
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                Person person = new Person();
                person.setId(jsonObject2.getInt("id"));
                person.setName(jsonObject2.getString("name"));
                person.setAddress(jsonObject2.getString("address"));
                list.add(person);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return list;
    }
 
    public static List<String> getlistString(String key, String jsonString) {
        List<String> list = new ArrayList<String>();
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            for (int i = 0; i < jsonArray.length(); i++) {
 
                String msg = jsonArray.getString(i);
                list.add(msg);
            }
 
        } catch (Exception e) {
            // TODO: handle exception
        }
 
        return list;
    }
 
    public static List<Map<String,Object>> getlistMap(String key, String jsonString){
        List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                  Map<String,Object> map=new HashMap<String, Object>();
                  Iterator<String> iterator=jsonObject2.keys();
                   
                  while(iterator.hasNext()){
                      String json_key=iterator.next();
                      Object json_value=jsonObject2.get(json_key);
                      if(json_value==null){
                          json_value="";
                      }
                      map.put(json_key, json_value);
                  }
               list.add(map);
            }
            }catch(Exception e){
                e.printStackTrace();
            }
        return list;
    }
}

android点击button触发的事件

@Override
    public void onClick(View v) {
         
        switch (v.getId()) {
        case  R.id.person:
            path="http://192.168.123.1/http/JsonAction";
        String jsonstring=HttpUtils.getJsonContent(path);
        Log.i(TAG,"1212"+jsonstring);
         
        Person person=JsonTools.getPerson("person", jsonstring);
        Log.i(TAG,person.toString());
        break;
 
        default:
            break;
        }
    }
 
}


更多参考:http://blog.csdn.net/zc527/article/details/44465053

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值