【Android 开发】: Android客户端与服务端之间使用JSON交互数据。

本文介绍了一个Android客户端与服务端使用JSON进行数据交互的Demo。服务端使用Java和JSON-lib库将Java对象转换为JSON数据,并通过HTTP协议提供给Android客户端。客户端通过Http协议请求服务端数据并进行JSON解析,展示了解析person、persons、listString和listMap四种不同数据类型的示例。
摘要由CSDN通过智能技术生成

    在前面的两讲中,我们讲解了JSON数据格式的一些基本知识,以及做一些小Demo,这一讲我们在前面的基础上来做一个综合的可扩展的Demo,主要是针对Android客户端解析服务端传递过来的JSON数据。整个Demo所作的操作如下图所示


1. 服务端

   服务端我们需要用到的解析JSON的库是用org.json --> Java --> JSON-lib项目中的库json-lib-2.4-jdk15.jar,这个库还需要附带几个依赖包:commons-beanutils.jar, commons-httpclient.jar, commons- lang.jar, ezmorph.jar,morph-1.0.1.jar。具体的包我会放在源码的lib目录下,读者可以自己去下载。

   查看这个项目的api文档:http://json-lib.sourceforge.net/apidocs/jdk15/index.html,我们主要使用的是JSON JSONArray JSONObject JSONSerializer 这几个类,JSONObject这个类可以发现它与org.json这个项目的用法很类似。

   1) 先做一个服务端的小实验,就是在服务端实现对Java对象转换成JSON数据格式并且在控制台输出。

Person.java 普通的Person类

package com.json.domain;

public class Person {

    private int id;
    private String name;
    private String address;

    public Person(int id, String name, String address) {
        super();
        this.id = id;
        this.name = name;
        this.address = 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;
    }

}

JsonService.java 服务于Person,给Person对象赋予各种属性

package com.json.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.json.domain.Person;

public class JsonService {   
    public JsonService() {
        // TODO Auto-generated constructor stub
    }

    public Person getPerson(){
        Person person = new Person(23, "AHuier", "XIAMEN");
        return person;
    }
    
    public List<Person> getListPerson(){
        List<Person> list = new ArrayList<Person>();
        Person person1 = new Person(1001, "AHuier1", "Beijing");
        Person person2 = new Person(1002, "AHuier2", "shenzheng");
        list.add(person1);
        list.add(person2);
        return list;
    }
    
    public List<String> getListString(){
        List<String> list = new ArrayList<String>();
        list.add("Hello");
        list.add("World");
        list.add("AHuier");
        return list;
    }
    
    public List<Map<String, Object>> getListMaps(){
        List<Map<String, Object>> listMap = new ArrayList<Map<String,Object>>();
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("color", "red");
        map1.put("id", 01);
        map1.put("name", "Polu");
        listMap.add(map1);
        Map<String, Object> map2 = new HashMap<String, Object>();
        map2.put("id", 07);
        map2.put("color", "green");
        map2.put("name", "Zark");
        listMap.add(map2);
        return listMap; 
    }
   
}
JsonTools.java 工具类
package com.json.tools;

import net.sf.json.JSONObject;

/**
 * @author xukunhui
 * 工具类,这里专门处理Java对象转Json字符串的功能
 */
public class JsonTools {

    public JsonTools() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @param key : JSON 名值对中的的名字
     * @param value :JSON 名值对中的值,值可以有多种类型
     * @return
     */
    // 接受对象转换为JSON数据格式并且作为字符串输出.
    public static String createJsonString(String key, Object value){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put(key, value);
        return jsonObject.toString(); //就可以转换成Json数据格式
    }
    
}
JsonTest.java 测试类
package com.json.test;

import com.json.domain.Person;
import com.json.service.JsonService;
import com.json.tools.JsonTools;

/**
 * @author xukunhui
 * 测试类,利用JSON讲Java对象转换成JSON数据格式,并且在控制台中输出
 */
public class JsonTest {

    public JsonTest() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String msg = "";
        JsonService service = new JsonService();
        // 带有三个属性的person对象
        Person person = service.getPerson();
        msg = JsonTools.createJsonString("person", person);
        System.out.printl
  • 4
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值