Java gson使用 将Java对象转为Json 并 Json转回Java对象

简述:

testJson_1中 将不同的java对象转换为json格式文件(String), 

testJson_2中传入testJson_1中生成的JSON String 参数,反向返回各种Java的对象

包括:java的String、List、HashMap、JavaBean, 以及对象内包含list成员的对象转为Json String 并且 Json转回


注意点:

Gson的toJson() ,fromJson()函数使用,和两个函数所要求的参数



使用gson 1.7.1包(导入方法是用ivy工具-可参考配置里的一篇记录,或者直接加入装jar包)




代码:

1)  Java Object To JSON

TestJson_1.java

package testJson;

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

import com.google.gson.*;

class PersonInfo{
	PersonInfo(String name,int age){
		this.name = name;
		this.age = age;
	}
	public PersonInfo() {
	}
	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;
	}
	private String name;
	private int age;
}

class FriendsBook{
	FriendsBook(String ownerName,List<PersonInfo> friendsBook){
		this.ownerName = ownerName;
		this.friendsBook = friendsBook;
	}
	public String getOwnerName() {
		return ownerName;
	}
	public void setOwnerName(String ownerName) {
		this.ownerName = ownerName;
	}
	public List<PersonInfo> getFriendsBook() {
		return friendsBook;
	}
	public void setFriendsBook(List<PersonInfo> friendsBook) {
		this.friendsBook = friendsBook;
	}
	private String ownerName;
	private List<PersonInfo> friendsBook;
}


//define a PersonBean to test Bean to Json
class PersonBean{
	PersonBean(int id,String name,int age){
		setId(id);
		setName(name);
		setAge(age);
	}
	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;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	private int id;
	private String name;
	private int age;
	private ArrayList<String>friendsList;
}

/**
 * 
 * Java Object TO JSON String
 *
 */

public class TestJson_1 {
	//use Gson lib
    private static Gson gson = new Gson();
    
    public String GetStringToJson(){
        String jsonResult = gson.toJson(new String("aaa"));
        return jsonResult;
    }
    
    public String GetArrayListToJson(){
        ArrayList<String> list = new ArrayList<String>();
        list.add("aaa");
        list.add("bbb");       
        list.add("ccc");       
        String jsonResult = gson.toJson(list);
        return jsonResult;
    }
    
    public String GetHashMapToJson(){
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "aaa"); 
        map.put(2, "bbb"); 
        map.put(3, "ccc"); 
        String jsonResult = gson.toJson(map);
        return jsonResult;
    }
    
    public String GetPersonBeanToJson(){
    	PersonBean pbean = new PersonBean(0,"aaa",21);
    	String jsonResult = gson.toJson(pbean);
    	return jsonResult;
    }
    
    public String GetFriendsBookToJson(){
    	PersonInfo p0 = new PersonInfo("John",22);
    	PersonInfo p1 = new PersonInfo("Marry",24);
    	PersonInfo p2 = new PersonInfo("Hellon",21);
    	List<PersonInfo> friendsList = new ArrayList<PersonInfo>();
    	friendsList.add(p0);
    	friendsList.add(p1);
    	friendsList.add(p2);
    	FriendsBook friendsBook = new FriendsBook("OWNER",friendsList);
    	String jsonResult = gson.toJson(friendsBook);
    	return jsonResult;
    }
    
}

2) JSON To Java Object
TestJson_2.java

package testJson;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

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

//JSON String To Java Object
public class TestJson_2 {
	private static Gson gson = new Gson();
	public String GetJsonToString(String jsonString){
		String str = gson.fromJson(jsonString, String.class);
		return str;
	}
	
	public ArrayList<String> GetJsonToArrayList(String jsonString){
		ArrayList<String> list = 
			gson.fromJson(jsonString, new TypeToken<ArrayList<String>>(){}.getType());
		return list;
	}
	
	public Map<Integer, String> GetJsonToHashMap(String jsonString){
		HashMap<Integer,String> hashMap = 
			gson.fromJson(jsonString, new TypeToken<HashMap<Integer,String>>(){}.getType());
		return hashMap;
	}
	
	public PersonBean GetJsonToPersonBean(String jsonString){
		PersonBean personBeanArrayList =
			gson.fromJson(jsonString, PersonBean.class);
		return personBeanArrayList;
	}
	
	public FriendsBook GetJsonToFriendsBook(String jsonString){
		FriendsBook friendsBook = gson.fromJson(jsonString, FriendsBook.class);
		return friendsBook;
	}
	
}


测试代码:

TestJson.Java

package testJson;

public class TestJson {
	private static final TestJson_1 tj1 = new TestJson_1();
	private static final TestJson_2 tj2 = new TestJson_2();
	public static void main(String[] args){
		//Java Object to JSON String
		System.out.println("TestStringToJson: " 
				+ tj1.GetStringToJson() + "\n");
		System.out.println("TestArrayListToJson: " 
				+ tj1.GetArrayListToJson() + "\n");
		System.out.println("TestHashMapToJson: " 
				+ tj1.GetHashMapToJson() + "\n");
		System.out.println("TestPersonBeanToJson: " 
				+ tj1.GetPersonBeanToJson() + "\n");
		System.out.println("TestFriendsBookToJson: \n" 
				+ tj1.GetFriendsBookToJson() + "\n");
		
		/*
		 * reverse JSON String To Java Object
		 */
		System.out.println("/***********************JSON String To Java Object******************************************/\n");
		
		String jsonToString = tj1.GetStringToJson();
		System.out.println("Json To String: " 
				+ tj2.GetJsonToString(jsonToString) + "\n");
		
		String jsonToArrayList_String_ = tj1.GetArrayListToJson();
		System.out.println("Json To ArrayList----list[0]: " 
				+ tj2.GetJsonToArrayList(jsonToArrayList_String_).get(0) + "\n");
		
		String jsonToHashMap = tj1.GetHashMapToJson();
		System.out.println("Json To HashMap----hashMap.get(3): " 
				+ tj2.GetJsonToHashMap(jsonToHashMap).get(3) + "\n");
		
		String jsonToPersonBean = tj1.GetPersonBeanToJson();
		System.out.println("Json To PersonBean----personBean.getName(): " 
				+ tj2.GetJsonToPersonBean(jsonToPersonBean).getName() + "\n");
		
		String jsonToFriendsBook = tj1.GetFriendsBookToJson();
		System.out.println("Json To FriendsBook----friendsBook.getFriendsBook().get(0).getName(): " 
				+ tj2.GetJsonToFriendsBook(jsonToFriendsBook).getFriendsBook().get(0).getName() + "\n");
	}
}



测试输出:


Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象Gson里最重要的对象有2个GsonGsonBuilder Gson有2个最基本的方法 1) toJson() – 转换java 对象JSON 2) fromJson() – 转换JSONjava对象 下面是几个小例子 1. toJson() example Java 代码 收藏代码 1. class TestObjectToJson { 2. private int data1 = 100; 3. private String data2 = "hello"; 4. } 5. 6. TestObjectToJson obj = new TestObjectToJson(); 7. Gson gson = new Gson(); 8. String json = gson.toJson(obj); class TestObjectToJson { private int data1 = 100; private String data2 = "hello"; } TestObjectToJson obj = new TestObjectToJson(); Gson gson = new Gson(); String json = gson.toJson(obj); 会输出 {"data1":100,"data2":"hello"} 2. fromJson() example Java 代码 收藏代码 1. import com.google.gson.Gson; 2. 3. class TestJsonFromObject { 4. private int data1; 5. private String data2; 6. } 7. 8. String json = "{'data1':100,'data2':'hello'}"; 9. Gson gson = new Gson(); 10. TestJsonFromObject obj = gson.fromJson(json, TestJsonFromObject.class); import com.google.gson.Gson; class TestJsonFromObject { private int data1; private String data2; } String json = "{'data1':100,'data2':'hello'}"; Gson gson = new Gson(); TestJsonFromObject obj = gson.fromJson(json, TestJsonFromObject.class); 3. 将Java对象的属性转换成指定的JSON名字 Java 代码 收藏代码 1. import com.google.gson.FieldNamingPolicy; 2. import com.google.gson.Gson; 3. import com.google.gson.GsonBuilder; 4. import com.google.gson.annotations.SerializedName; 5. 6. public class TestGson { 7. 8. @SerializedName("first_field") 9. private String field1; 10. 11. private String secondField; 12. 13. public TestGson(String param1, String param2) { 14. field1 = param1; 15. secondField = param2; 16. } 17. } 18. 19. TestGson obj = new TestGson("aaaa", "bbbbb"); 20. Gson gson = new Gson
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值