gson class[] 与 Json String 相互转化通用化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28711703/article/details/79080319

1.目的:

主要通过gson实现class 数组与json 转化的通用化的工具。不会因为类不同改变工具的类。


2.源代码

工具类:

package Util;



import java.util.ArrayList;


import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;


//是将对象转换成字符串
public class MyJson<T> {
	
//	public static void main(String[] args){
//		System.out.println();
//		String jsonData=  "[{\"name\":\"小路\",\"age\":23}]";
//		parseToString(jsonData);
//	}
	
	
	

//	public  LinkedList<T> parseToOject(String jsonData){
//		//这样拿到的是�?��Object数组,现在我只解析一个Products
//		Type listType=new TypeToken<LinkedList<T>>(){}.getType();    //TypeToken是一个空的抽象类  
//		Gson gson=new Gson();
//		LinkedList<T> Objects=gson.fromJson(jsonData,listType);  //Object对象会被保存到LinkedList�? 
//	    return Objects;
//		
//	}
	
	
	
	/*
	 * Products product=new Products("1","zzx","mm",999.0,"mam","hao","hhhhhhhhhhhhhhhh","phone","000","1314");
		List<Products> products =new ArrayList<Products>();
		products.add(product);
		
		
		
		
		String json=new Object2Json().parseToJson(products);	
		System.out.println(new Json2Object<Products>().parseToOject(json, Products[].class).get(0).getPname());
		
	 */
	
	
	
	/*1.List是一个接口,因此是没有实例的,ArrayList是他 的一个子类,所以可以用ArrayList来构造List对象数组
	 * List<Products> products =new ArrayList<Products>();
	 * 
	 * 2.Class<T[]> type相比上面这个泛型函数,这边多了一个参数   Products[].class
	 * 网上解释是这样的      造成这种问题的原因是:泛型在编译期类型被擦除导致,是Products类型在这里不能识别,所以还要讲Products类名传进来(不是对象啊)Products[].class
	 * 但是Object2Json不需要这个参数,关键是这个函数Gson().fromJson(jsonData, type);
	 * Gson第二个参数需要的是JavaBean所需要的类型名,泛型T虽然可以继承,但是在这里并不能识别,因此需要把类型名传进来
	 */
	
	
	
	//Products[].class
	public ArrayList<T> parseToObject(String jsonData, Class<T[]> type){
		//这样拿到的是一个Products数组,现在我只解析一个Products
		T[] list = new Gson().fromJson(jsonData, type);
		ArrayList<T> array_list=new ArrayList<T>();
		for(int i=0;i<list.length;i++){
			array_list.add(list[i]);
			
		}
		
		return array_list;
	}
	
	
	
	public   String parseToJson(ArrayList<Object> objects){
		//Iterator iterator=Views.iterator();
		Gson g=new Gson();
		String ListJsonString = "[";
//		for(Iterator iterator = objects.iterator();iterator.hasNext();){  
//			  // View View=(View)iterator.next();
//			   String jsonObject=g.toJson(objects.);	
//			   ListJsonString+=jsonObject+",";
//			}
		for(int i=0;i<objects.size();i++){
			String jsonObject=g.toJson(objects.get(i));
			ListJsonString+=jsonObject+",";
		}
		ListJsonString=ListJsonString.substring(0, ListJsonString.length()-1)+"]";
		return ListJsonString;
	
	}

	
	
	
	
	
}



测试类

package Test;


import java.util.ArrayList;



import Domain.Student;

public class Test {
	public static void  main(String[] args ){
		
		ArrayList<Student> array_student=new ArrayList<Student>();
		Student student=new Student(1,"xiaolu","123");
		array_student.add(student);


		String jsonString=new Util.MyJson().parseToJson(array_student);
		System.out.println(jsonString);
		
		
		array_student=(ArrayList<Student>) new Util.MyJson().parseToObject(jsonString, Domain.Student[].class);
		System.out.println(array_student.get(0).getUsername());
		
	}
	
	

}




猜你喜欢

转载自blog.csdn.net/qq_28711703/article/details/79080319
今日推荐