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

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

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

2、功能强大,支持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/

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

FastJson处理Map List 对象的更多相关文章

  1. java中map和对象互转工具类的实现示例

    在项目开发中,经常碰到map转实体对象或者对象转map的场景,工作中,很多时候我们可能比较喜欢使用第三方jar包的API对他们进行转化,而且用起来也还算方便,比如像fastJson就可以轻松实现map ...

  2. Java基础/利用fastjson反序列化json为对象和对象数组

    利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...

  3. java fastjson:Map与json以及JSONObject ,JSONObject与String互转

    import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson ...

  4. JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面

    将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...

  5. Map生成器 map适配器如今能够使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象

    Map生成器 map适配器如今能够使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象 package org.rui.collection2.map; /** * ...

  6. Map.containsKey方法——判断Map集合对象中是否包含指定的键名

    该方法判断Map集合对象中是否包含指定的键名.如果Map集合中包含指定的键名,则返回true,否则返回false. public static void main(String[] args) { M ...

  7. (精)字符串,map -> json对象->map(初学者必读)

    import java.util.LinkedList; import java.util.*; import java.util.ListIterator; import net.sf.json.J ...

  8. Map与对象关系的思考之P1563玩具谜题

    P1563 玩具谜题 结论: map在一些情况有种"对象"的意味,在JSON中,对象可以用K-V格式存储:mybatis中参数是map或者对象都可以实现解析...k-v格式的数据存 ...

  9. JavaScriptES6中Map与对象、数组,JSON之间的相互转换

    JavaScriptES6中Map与对象.数组,JSON之间的相互转换 https://blog.csdn.net/c__dreamer/article/details/82183130

随机推荐

  1. 「工具」Dubbo可视化测试工具的设计和实现

    「工具」Dubbo可视化测试工具的设计和实现 学习了:https://blog.csdn.net/qq355667166/article/details/78914453

  2. JavaScript中给二维数组动态添加元素的质朴方法

    var myData = new Array(); for(var i=0;i<tableDatas.length;i++){ var arr=tableDatas[i]; ...... /// ...

  3. mysql 导入sql文件时编码报错

    1.命令行导入 mysql -uroot -pnewpwd --default-character-set=utf8 databasename < xxx.sql 2.使用source导入 进入 ...

  4. vuex Payload 荷载

    1.payload payload:有效载荷,即记录有效信息的部分. 通常在传输数据时,为了使数据传输更可靠,要把原始数据分批传输,并且在每一批数据的头和尾都加上一定的辅助信息,比如这一批数据量的大小 ...

  5. ZF-net

    ZF-net 摘要: 1.这篇文章的motivation 是 :CNN性能良好,可是我们不知道它为何性能良好.也不知道它怎么能够被提高? 2.本文介绍了一种新方法实现中间层和分类器的可视化 3.採用消 ...

  6. PL/SQL Developer 和 instantclient客户端安装配置

    PL/SQL Developer 和 instantclient客户端安装配置 oracle的安装我就不写了,不会安装的网上随便找一个教程就能装上,安装起来比較简单.可是,PL/SQL Develop ...

  7. shell脚本实现定时重启进程

    ##############################Deploy crontab for yechang ad*******eta restart ###################### ...

  8. sql数据分页

    方法一.直接限制返回区间 (只适应于mysql) SELECT * FROM table WHERE 查询条件 ORDER BY 排序条件 LIMIT ((页码-1)*页大小),页大小; 优点:写法简 ...

  9. POJ 3373 Changing Digits

    题目大意: 给出一个数n,求m,使得m的长度和n相等.能被k整除.有多个数符合条件输出与n在每位数字上改变次数最小的.改变次数同样的输出大小最小的.  共同拥有两种解法:DP解法,记忆化搜索的算法. ...

  10. 如何禁止同IP站点查询和同IP站点查询的原理分析 Robots.txt屏蔽BINGBOT

    很多站长工具中都有“同IP站点查询”.“IP反查域名”这种服务不少人都不知道是什么原理,其实这些服务几乎都是用BING(以前的LIVE)来实现 的,BING有个特别功能 BING抓取页面时会把站点的I ...