JSON的解析 --之 FastJson 的使用

本文详细介绍 FastJSON 的使用方法,包括将 Java 对象序列化为 JSON 字符串及将 JSON 字符串反序列化为 Java 对象的过程。文章通过多个实例演示了如何处理不同类型的对象,如 JavaBean、List 和 Map,并提供了 FastJSON 相关的方法总结。
FastJSOn是阿里巴巴开源的JSON处理工具,包括“序列化”和“反序列化”两部分,它具备如下特征:

速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。包括自称最快的jackson。
功能强大,完全支持java bean、集合、Map、日期、Enum,支持范型,支持自省。
无依赖,能够直接运行在Java SE 5.0以上版本
支持Android。
开源 (Apache 2.0)

导入依赖:
<!--https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<!-- 解析josn使用 ali-出-->
<dependency>
	<groupId>com.alibaba</groupId>
	 <artifactId>fastjson</artifactId>
	 <version>1.2.26</version>
</dependency>
package com.dcc.core.serxe.util;

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;
/*
 *  利用 fastjson 进行转换和解析数据
 */
public class TestFastJson {
	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.dcc.core.serxe.util;

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

方法总结:
方法有重复 传递的参数不一样
	 * 方法:JSON.toJOSNString(javaBean) 		   把对象转为josn串
	 *     JSON.parseObject(json,java.class)	   把json串转为指定java集合
	 *     
	 *     JSON.toJSONString(list<javaBean>) 	   把集合对象转json串
	 *     JOSN.parseArray(json,java.class)  	   把json串转为指定java对象集合
	 *     
	 *     JSON.toJSONString(list<String>)     	   把集合对象转json串
	 *     JOSN.parseArray(json,list<String>)  	   把json串转为指定list<String>集合
	 *     //JSON.parseObject(jsonString,new TypeReference<List<String>>(){})
	 *     
	 *     JSON.toJSONString(list<Map<String,Object>)     把集合对象转json串
	 *     JOSN.parseArray(json,list<Map<String,Object>)  把json串转为指定list<String>集合
	 *     //JSON.parseObject(jsonString,new TypeReference<List<Map<String,Object>>>(){})
	 *     
	 *     JSON.toJSONString(map,true)    		      将map(string,List<JavaBean>)对象转化成json字符串
	 *     JSON.parseArray(map.get(key),Person.class)     把json串转为指定List<JavaBean>)集合
	 *     
	 *     JSON.toJSONString(map,true); 		      将map转化为json
	 *     (Map<String,String>)JSON.parse(json);          将 json转化为map 
	 *   

转载自:http://blog.youkuaiyun.com/wangming520liwei/article/details/53432857  感谢分享!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值