简单json,FastJson,Gson解析

json,FastJson,Gson简单比较:

后台数据和手机客户端之间的传输可以用xml格式,或者使用json字符串,这里写一个简单的json的示例Demo。


业务逻辑:一般是客户端发送请求,后台Action或Servlet接受请求以后委托给Service业务层调用Dao层获取到数据以后转换为json字符串发送至前台,前台在接收到json字符串以后解析字符串,获得服务器数据,显示在手机客户端。

Model 层  Person.java

package com.demo.domain;

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;
	}

	public Person(int id, String name, String address) {
		super();
		this.id = id;
		this.name = name;
		this.address = address;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", address=" + address
				+ "]";
	}

}

简单起见,Dao层省略,直接在业务逻辑Service层取得测试数据:

JsonService.java

package com.demo.service;

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

import com.demo.domain.Person;

/**
 * @author kk
 * 
 */
public class JsonService {

	/**
	 * get one person obj
	 * 
	 * @return a person
	 */
	public Person getPerson() {
		Person p = new Person(1001, "jack", "长沙");
		return p;
	}

	/**
	 * get a String array
	 * @return String[]
	 */
	public String[] getStringArr() {
		return new String[] { "广州", "上海", "深圳" };
	}

	/**
	 * get a list persons
	 * 
	 * @return List<Person>
	 */
	public List<Person> getPersonsList() {
		List<Person> list = new ArrayList<Person>();
		Person p = new Person(1001, "jack", "长沙");
		Person p1 = new Person(1002, "rose", "上海");
		list.add(p);
		list.add(p1);
		return list;
	}

	/**
	 * get a array persons
	 * 
	 * @return Person[]
	 */
	public Person[] getPersonsArr() {
		Person p = new Person(1001, "jack", "长沙");
		Person p1 = new Person(1002, "rose", "广州");
		return new Person[] { p, p1 };
	}

	/**
	 * get a list map persons
	 * 
	 * @return List<Map<String,Object>>
	 */
	public List<Map<String, Object>> getListMapPerson() {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		Map<String, Object> map = new HashMap<String, Object>();
		Person p1 = new Person(1001, "jack", "长沙");
		Person p2 = new Person(1002, "rose", "广州");
		map.put("p1", p1);
		map.put("p2", p2);

		Map<String, Object> map1 = new HashMap<String, Object>();
		Person p3 = new Person(1003, "tom", "长沙");
		Person p4 = new Person(1004, "somebody", "广州");
		map.put("p3", p3);
		map.put("p4", p4);

		list.add(map);
		list.add(map1);
		return list;
	}
}


项目中导入了json,fastjson,gson的jar包,引用结构如下:




简单起见,这里没有在android客户端发送请求获取服务器端数据来解析,直接在main里面对代码测试:

TestJsonGsonFastJson.java

package com.demo.test;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.TypeReference;
import com.demo.domain.Person;
import com.demo.service.JsonService;

/**
 * @author kk
 * 
 */
public class TestJsonGsonFastJson {
	public static void main(String[] args) {
		JsonService service = new JsonService();
		String jsonStr = null;

		// convert to json String
		net.sf.json.JSONObject jsonObj = new net.sf.json.JSONObject();
		jsonObj.put("person", service.getPerson());
		jsonStr = jsonObj.toString();
		System.out.println("json String:" + jsonStr);

		// parser the json String
		jsonObj = net.sf.json.JSONObject.fromObject(jsonStr);
		jsonObj = jsonObj.getJSONObject("person");
		Person jsonPerson = new Person();
		jsonPerson.setId(jsonObj.getInt("id"));
		jsonPerson.setName(jsonObj.getString("name"));
		jsonPerson.setAddress(jsonObj.getString("address"));
		System.out.println(jsonPerson);
		System.out.println();

		// fastJson convert json String
		jsonStr = com.alibaba.fastjson.JSON.toJSONString(service.getPerson());
		System.out.println("fastJson String:" + jsonStr);

		// fastJson parser json String
		Person fastJsonPerson = com.alibaba.fastjson.JSONObject.parseObject(
				jsonStr, Person.class);
		System.out.println(fastJsonPerson + "\n");

		// convert to Gson String
		com.google.gson.Gson gson = new com.google.gson.Gson();
		jsonStr = gson.toJson(service.getPerson());
		System.out.println("gson String:" + jsonStr);

		// parser the Gson String to Obj
		Person person = gson.fromJson(jsonStr, Person.class);
		System.out.println(person);

		System.out.println();

		// convert array data to json
		jsonObj = new net.sf.json.JSONObject();
		jsonObj.put("arrpersons", service.getPersonsArr());
		jsonStr = jsonObj.toString();
		System.out.println("json arr String:" + jsonStr);

		// parser array data
		jsonObj = net.sf.json.JSONObject.fromObject(jsonStr);
		net.sf.json.JSONArray jsonArr = jsonObj.getJSONArray("arrpersons");
		Person[] personArr = new Person[jsonArr.size()];
		for (int i = 0; i < jsonArr.size(); i++) {
			net.sf.json.JSONObject temp = jsonArr.getJSONObject(i);
			Person tempPerson = new Person();
			tempPerson.setId(temp.getInt("id"));
			tempPerson.setName(temp.getString("name"));
			tempPerson.setAddress(temp.getString("address"));
			personArr[i] = tempPerson;
		}
		for (Person temp : personArr) {
			System.out.println(temp);
		}
		System.out.println(personArr.toString());
		System.out.println();

		// convert arr data to fastJson String
		jsonStr = com.alibaba.fastjson.JSON.toJSONString(service
				.getPersonsArr());
		System.out.println("fastJson arr data String:" + jsonStr);

		// parser fastJson arr data
		com.alibaba.fastjson.JSONArray parseFSArray = com.alibaba.fastjson.JSON
				.parseArray(jsonStr);
		List<Person> persons = com.alibaba.fastjson.JSON.parseArray(jsonStr,
				Person.class);
		System.out.println(persons);
		System.out.println();

		// convert arr data to Gson String
		gson = new com.google.gson.Gson();
		jsonStr = gson.toJson(service.getPersonsArr());
		System.out.println("gson arr data String:" + jsonStr);

		// parser Gson arr data
		personArr = gson.fromJson(jsonStr,
				new com.google.gson.reflect.TypeToken<Person[]>() {
				}.getType());
		for (Person temp : personArr) {
			System.out.println(temp);
		}
		System.out.println(personArr);
		System.out.println();

		// convert list data to json String
		jsonObj = new net.sf.json.JSONObject();
		jsonObj.put("persons", service.getPersonsList());
		jsonStr = jsonObj.toString();
		System.out.println("json list String:" + jsonStr);

		// parser the json list data
		jsonObj = net.sf.json.JSONObject.fromObject(jsonStr);
		jsonArr = jsonObj.getJSONArray("persons");
		persons = new ArrayList<Person>();
		for (int i = 0; i < jsonArr.size(); i++) {
			net.sf.json.JSONObject temp = jsonArr.getJSONObject(i);
			Person p = new Person();
			p.setId(temp.getInt("id"));
			p.setName(temp.getString("name"));
			p.setAddress(temp.getString("address"));
			persons.add(p);
		}
		System.out.println(persons + "\n");

		// convert list data to fastJson String
		jsonStr = com.alibaba.fastjson.JSON.toJSONString(service
				.getPersonsList());
		System.out.println("fastJson list String:" + jsonStr);

		// parser the fastJson list data
		persons = com.alibaba.fastjson.JSON.parseArray(jsonStr, Person.class);
		System.out.println(persons);
		persons = com.alibaba.fastjson.JSON.parseObject(jsonStr,
				new TypeReference<List<Person>>() {
		}.getType());
		System.out.println(persons+"\n");

		// convert list data to Gson String
		jsonStr = gson.toJson(service.getPersonsList());
		;
		System.out.println("gson list String:" + jsonStr);

		// parser Gson list data
		Type type = new com.google.gson.reflect.TypeToken<List<Person>>() {
		}.getType();
		persons = gson.fromJson(jsonStr, type);
		System.out.println(persons.getClass());
		System.out.println(persons);
		for (Person p : persons) {
			System.out.println(p);
		}
	}
}



Console :


json String:{"person":{"address":"长沙","id":1001,"name":"jack"}}
Person [id=1001, name=jack, address=长沙]

fastJson String:{"address":"长沙","id":1001,"name":"jack"}
Person [id=1001, name=jack, address=长沙]

gson String:{"id":1001,"name":"jack","address":"长沙"}
Person [id=1001, name=jack, address=长沙]

json arr String:{"arrpersons":[{"address":"长沙","id":1001,"name":"jack"},{"address":"广州","id":1002,"name":"rose"}]}
Person [id=1001, name=jack, address=长沙]
Person [id=1002, name=rose, address=广州]
[Lcom.demo.domain.Person;@677951c9

fastJson arr data String:[{"address":"长沙","id":1001,"name":"jack"},{"address":"广州","id":1002,"name":"rose"}]
[Person [id=1001, name=jack, address=长沙], Person [id=1002, name=rose, address=广州]]

gson arr data String:[{"id":1001,"name":"jack","address":"长沙"},{"id":1002,"name":"rose","address":"广州"}]
Person [id=1001, name=jack, address=长沙]
Person [id=1002, name=rose, address=广州]
[Lcom.demo.domain.Person;@6bfd472

json list String:{"persons":[{"address":"长沙","id":1001,"name":"jack"},{"address":"上海","id":1002,"name":"rose"}]}
[Person [id=1001, name=jack, address=长沙], Person [id=1002, name=rose, address=上海]]

fastJson list String:[{"address":"长沙","id":1001,"name":"jack"},{"address":"上海","id":1002,"name":"rose"}]
[Person [id=1001, name=jack, address=长沙], Person [id=1002, name=rose, address=上海]]
[Person [id=1001, name=jack, address=长沙], Person [id=1002, name=rose, address=上海]]

gson list String:[{"id":1001,"name":"jack","address":"长沙"},{"id":1002,"name":"rose","address":"上海"}]
class java.util.ArrayList
[Person [id=1001, name=jack, address=长沙], Person [id=1002, name=rose, address=上海]]
Person [id=1001, name=jack, address=长沙]
Person [id=1002, name=rose, address=上海]


可以看出在对集合型数据解析的时候Gson,FastJson反射还是非常方便好用的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值