【第15篇】通过FastJson把字符串转换成JSON和Map和List对象处理json数据

Json 专栏收录该内容
31 篇文章 1 订阅

     Fastjson是一个Java语言编写的高性能功能完善的JSON库。

Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。

1、遵循http://json.org标准,为其官方网站收录的参考实现之一。

2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。

3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。

4、开源,使用Apache License 2.0协议开源。http://code.alibabatech.com/wiki/display/FastJSON/Home

5、具有超高的性能,java世界里没有其他的json库能够和fastjson可相比了。

高性能

fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。

支持标准

Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。

功能强大

支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。

支持循环引用

无依赖

不需要例外额外的jar,能够直接跑在JDK上。

支持范围广

支持JDK 5、JDK 6、Android、阿里云手机等环境。

开源

Apache License 2.0

代码托管在github.org上,项目地址是 https://github.com/AlibabaTech/fastjson

测试充分

fastjson有超过1500个testcase,每次构建都会跑一遍,丰富的测试场景保证了功能稳定。

获得fastjson

下载

http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/

maven

package ivyy.taobao.com.domain.fastjson;

import ivyy.taobao.com.entity.Student;

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

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

/**
 *@DEMO:json
 *@Java:FastJSON.java
 *@Date:2015-1-19上午10:28:12
 *@Author:龙叔
 *@Email:jilongliang@sina.com
 *@Weibo:http://weibo.com/jilongliang
 *@Version:1.0
 *@Description:fastjson跟json-lib是语法很像,一句话说,所有json都差不多,
 *大家伙也没不要研究那么多,懂一种自己最擅长而且熟悉能解决自己要解决的问题就OK,
 *从fastjson反编译过来看 你就看到pom.xml里面的配置肯定能看到json-lib,此时能
 *证明fastjson就是运用了json-lib!
 *
 *--------------------------------------------
 *		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-smile</artifactId>
			<version>1.9.9</version>
			<scope>test</scope>
		</dependency>
*--------------------------------------------
		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
			<scope>test</scope>
		</dependency>
--------------------------------------------
*		 <dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.4</version>
			<classifier>jdk15</classifier>
			<scope>test</scope>
		</dependency>
--------------------------------------------
 */
public class FastJSON {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		//string2Json();
		//string2Object();
		//string2List();
		
		map2json();
		map2JSON();
	}
	
	
	/**
	 * 通过fastjson把字符串转换成JSON数据
	 * TypeReference
	 */
	public static void string2Json(){
		StringBuffer buffer=new StringBuffer();
		buffer.append("{");
			buffer.append("\"age\":").append("27").append(",");
			buffer.append("\"userName\":").append("\"龙叔\"").append(",");
			buffer.append("\"address\":").append("\"广东省云浮市\"");
		buffer.append("}");
		
		String jsonText=buffer.toString();
		
		JSONObject jobj=JSON.parseObject(jsonText);
		String address=jobj.get("address").toString();
		System.out.println(address);
	}
	
	
	/**
	 * 通过fastjson把字符串转换成对象
	 * TypeReference
	 */
	public static void string2Object(){
		StringBuffer buffer=new StringBuffer();
		buffer.append("{");
			buffer.append("\"age\":").append("27").append(",");
			buffer.append("\"userName\":").append("\"龙叔\"").append(",");
			buffer.append("\"address\":").append("\"广东省云浮市\"");
		buffer.append("}");
		
		String jsonText=buffer.toString();
		//方法一 把json字符串转成Student对象
		Student stu1 = JSON.parseObject(jsonText, new TypeReference<Student>(){});
		//方法二 把json字符串转成Student对象
		Student stu2 = JSON.parseObject(jsonText,Student.class);  
		
		System.out.println(stu1.getAddress());
		System.out.println(stu2.getAddress());
	}
	
	/**
	 * 通过fastjson把字符串转换成泛型数组
	 * TypeReference
	 */
	public static void string2List(){
		StringBuffer buffer=new StringBuffer();
		buffer.append("[{");
			buffer.append("\"age\":").append("27").append(",");
			buffer.append("\"userName\":").append("\"龙叔\"").append(",");
			buffer.append("\"address\":").append("\"广东省云浮市\"");
		buffer.append("}]");
		
		String jsonText=buffer.toString();
		//转成成数组
		Student[] stu2 = JSON.parseObject(jsonText,new TypeReference<Student[]>(){});  
		List<Student> list = Arrays.asList(stu2);
		
		for(Student st:list){
			System.out.println(st.getAddress());
		}
		
		// 转换成ArrayList
        ArrayList<Student> list2 = JSON.parseObject(jsonText, new TypeReference<ArrayList<Student>>(){}); 
        
        for (int i = 0; i < list2.size(); i++) {
        	Student obj =(Student) list2.get(i);
        	System.out.println(obj.getAddress());
		}
        
	}
	/**
	 * 通过fastjson把Map换成字符串转
	 */
	public static void map2json(){
		//创建一个Map对象
		 Map<String,String> map = new HashMap<String, String>();
		 map.put("username", "周伯通");
		 map.put("address", "广东省仙游谷");
		 map.put("age", "198");
		 String json = JSON.toJSONString(map,true); //转成JSON数据
		 
		 Map<String,String> map1 = (Map<String,String>)JSON.parse(json); 
	     //遍历数组数据
		 for (String key : map1.keySet()) { 
	    	System.out.println(key+":"+map1.get(key)); 
	    } 
	}
	/**
	 * 通过fastjson把Map换成字符串转
	 */
	public static void map2JSON() {
		Map map = new HashMap();
		map.put("username", "周伯通");
		map.put("address", "广东省仙游谷");
		map.put("age", "198");
		String json = JSON.toJSONString(map);
		Map map1 = JSON.parseObject(json);
		for (Object obj : map.entrySet()) {
			Map.Entry<String, String> entry = (Map.Entry<String, String>) obj;
			System.out.println(entry.getKey() + "--->" + entry.getValue());
		}
	} 
}


package ivyy.taobao.com.entity;

import java.io.Serializable;

/**
 *@Author:liangjl
 *@Date:2014-12-19
 *@Version:1.0
 *@Description:
 */
public class Student implements Serializable{
	private Integer age;
	private String sex;
	private String userName;
	private String birthday;
	private String address;
	private String email;
	
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}



  • 7
    点赞
  • 1
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值