FastJson 的使用
FastJSOn是阿里巴巴开源的JSON处理工具,包括“序列化”和“反序列化”两部分,它具备如下特征:
- 速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。包括自称最快的jackson。
- 功能强大,完全支持java bean、集合、Map、日期、Enum,支持范型,支持自省。
- 无依赖,能够直接运行在Java SE 5.0以上版本
- 支持Android。
- 开源 (Apache 2.0)
既然速度快,当然要体验一下。更何况是国产货,当然要支持了。测试一下,以后在项目里使用...
要使用 JSON. 要引入fastjson 包看代码:
package com.json.fastjson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.json.bean.Person;
/*
* 利用 fastjson 进行转换和解析数据
*/
public class FastjsonClass {
public static void main(String[] args) {
//method1();
//method2();
//method3();
method4();
//method5();
//method6();
method7();
}
static void method1(){
System.out.println("将json字符串转化成JavaBean对象");
Person person = new Person("1","fastjson",1);
//将javaBean 对象
String jsonString = JSON.toJSONString(person);
System.out.println(jsonString);
//将json字符串转化成JavaBean对象
person =JSON.parseObject(jsonString,Person.class);
System.out.println(person.toString());
System.out.println("将json字符串转化成JavaBean对象");
}
static void method2(){
System.out.println("将json字符串转化成List<JavaBean>对象");
Person person1 = new Person("1","fastjson1",1);
Person person2 = new Person("2","fastjson2",2);
List<Person> persons = new ArrayList<Person>();
persons.add(person1);
persons.add(person2);
String jsonString = JSON.toJSONString(persons);
System.out.println("将json字符串转化成List<JavaBean>对象"+jsonString);
//进行json解析
List<Person> persons2 = JSON.parseArray(jsonString,Person.class);
System.out.println("person1解析后的值:"+persons2.get(0).toString());
System.out.println("person2解析后的值:"+persons2.get(1).toString());
System.out.println("将json字符串转化成List<JavaBean>对象完成");
}
static void method3(){
System.out.println("将json字符串转化成List<String>对象");
List<String> list = new ArrayList<String>();
list.add("fastjson1");
list.add("fastjson2");
list.add("fastjson3");
String jsonString = JSON.toJSONString(list);
System.out.println("json转换后:"+jsonString);
//解析json
List<String> list2 = JSON.parseObject(jsonString,new TypeReference<List<String>>(){});
System.out.println(list2.get(0)+"::"+list2.get(1)+"::"+list2.get(2));
System.out.println("将json字符串转化成List<String>对象成功");
}
static void method4(){
System.out.println("将json字符串转化成List<Map<String,Object>>对象");
Map<String,Object> map = new HashMap<String,Object>();
map.put("key1", "value1");
map.put("key2", "value2");
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("key1", 1);
map2.put("key2", 2);
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
list.add(map);
list.add(map2);
String jsonString = JSON.toJSONString(list);
System.out.println("json转化后:"+jsonString);
//解析json数据
List<Map<String,Object>> list2 = JSON.parseObject(jsonString,new TypeReference<List<Map<String,Object>>>(){});
System.out.println("List<Map>解析后: "+list2);
System.out.println("map的key1值:ֵ"+list2.get(0).get("key1"));
System.out.println("map的key2值:"+list2.get(0).get("key2"));
System.out.println("map2的key1值:ֵ"+list2.get(1).get("key1"));
System.out.println("map2的key2值:ֵ"+list2.get(1).get("key2"));
}
static void method5(){
System.out.println("将json字符串转化成map(string,List<JavaBean>)对象");
Person person1 = new Person("1","fastjson1",1);
Person person2 = new Person("2","fastjson2",2);
List<Person> persons = new ArrayList<Person>();
persons.add(person1);
persons.add(person2);
String jsonString = JSON.toJSONString(persons);
System.out.println("map(string,List<JavaBean>):"+jsonString);
Map<String,String> map = new HashMap<String, String>();
map.put("key1", jsonString);
String json = JSON.toJSONString(map,true);
System.out.println(json);
for (String key : map.keySet()) {
//System.out.println(key+":"+map.get(key));
//进行json解析
List<Person> persons2 = JSON.parseArray(map.get(key),Person.class);
System.out.println("person1解析后的值:"+persons2.get(0).toString());
System.out.println("person2解析后的值:"+persons2.get(1).toString());
}
}
static void method6(){
Map<String,String> map = new HashMap<String, String>();
map.put("a",new String("hhh"));
map.put("b",new String("aaa"));
map.put("c",new String("ggg"));
String json = JSON.toJSONString(map,true);
System.out.println(json);
//JSON -> Map
Map<String,String> map1 = (Map<String,String>)JSON.parse(json);
for (String key : map1.keySet()) {
System.out.println(key+":"+map1.get(key));
}
}
static void method7(){
System.out.println("将json字符串转化成Map<string,List<Map<string, string>>对象");
Map<String,String> map = new HashMap<String, String>();
map.put("key1", "aaa");
map.put("key2", "bbb");
map.put("key3", "ccc");
/*Person person1 = new Person("1","fastjson1",1);
Person person2 = new Person("2","fastjson2",2);*/
//String json = JSON.toJSONString(map,true);
Map<String,String> mapk = new HashMap<String, String>();
mapk.put("key1", "a1a");
mapk.put("key2", "b2b");
mapk.put("key3", "c3c");
/*Person person1 = new Person("1","fastjson1",1);
Person person2 = new Person("2","fastjson2",2);*/
//String json1 = JSON.toJSONString(mapk,true);
List<Map<String, String>> persons = new ArrayList<Map<String, String>>();
persons.add(map);
persons.add(mapk);
String jsonString = JSON.toJSONString(persons);
System.out.println("List<Map>:"+jsonString);
Map<String,String> map1 = new HashMap<String, String>();
map1.put("table1",jsonString);
map1.put("table2", jsonString);
String jsonString1 = JSON.toJSONString(map1);
System.out.println("map<List<Map>>:"+jsonString1);
Map<String,String> map2 = (Map<String,String>)JSON.parse(jsonString1);
for (String key : map2.keySet()) {
//System.out.println(key+":"+map.get(key));
//进行json解析
String listparse = map2.get(key);
System.out.println("List<Map>:"+listparse);
List<Map<String, Object>> list2 = JSON.parseObject(listparse,new TypeReference<List<Map<String,Object>>>(){});
System.out.println("List<Map>转换后:"+list2);
for(int i = 0; i < list2.size(); i++){
//System.out.println("map的key1值:ֵ"+list2.get(i).get("key1"));
for(String key1:list2.get(i).keySet()){
System.out.println(key1+":"+list2.get(i).get(key1));
}
}
}
}
}
package com.json.bean;
public class Person {
private String id ;
private String name;
private int age ;
public Person(){
}
public Person(String id,String name,int age){
this.id=id;
this.name=name;
this.age=age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "解析json字符串后获取的person对象:id的值是" + id + ", name的值是" + name + ", age的值是" + age + "";
}
}
public static void method9(){
Map<String, List<TreeMap<String, Object>>> dataMap = new HashMap<String, List<TreeMap<String, Object>>>();
// 表1
dataMap.put("table1", getDataList(1));
// 表2
dataMap.put("table2", getDataList(2));
String jsonString = JSON.toJSONString(dataMap);
System.out.println(jsonString);
//JSONObject jsonObject = JSON.parseObject(jsonString);
@SuppressWarnings("unchecked")
Map<String, List<TreeMap<String, Object>>> parse = (Map<String, List<TreeMap<String, Object>>>) JSON.parse(jsonString);
Map<String, List<TreeMap<String, Object>>> a = parse;
for(String key: a.keySet()){
System.out.println(key);
List<TreeMap<String, Object>> as = a.get(key);
System.out.println(as.get(0));
}
/* for (String table : jsonObject.keySet()) {
System.out.println("表名:" + table);
JSONArray jsonArray = jsonObject.getJSONArray(table);
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject keyValue = jsonArray.getJSONObject(i);
for (String key : keyValue.keySet()) {
System.out.println("字段:" + key + keyValue.get(key));
}
}
}*/
}
private static List<TreeMap<String, Object>> getDataList(int index) {
List<TreeMap<String, Object>> dataList = new ArrayList<TreeMap<String,Object>>();
TreeMap<String, Object> keyValue = new TreeMap<String, Object>();
keyValue.put("index", Integer.toString(index));
keyValue.put("status", new Integer(index));
dataList.add(keyValue);
return dataList;
}