json和对象转换以及相同不同对象的json解析为对应对象

User的对象user和json字符串之间的转换用谷歌的Gson类,Gson gson = new Gson();


user->json: 

gson.toJson(user);


json->user

gson.fromJson(json,user.class);


jsons中包含多个user时,可以转换为List<User> users;

users = gson.fromJson(jsons, new TypeToken<List<User>>(){}.getType());


jsons中包含对个不同对象,比如有Result和User两个类的对象,这时字符串转换为对象要用到JSONArray,具体用法看下面例子中对字符串str3的处理过程


import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;

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

public class JsonTest {
	
	/**只包含一个User对象的json字符串*/
	static String str1 = 	"{\"name\":\"微软\",\"age\":20}";
	
	/**包含两个User对象的json字符串*/
	static String str2 = 	"[{\"name\":\"微软\",\"age\":20},{'name':'谷歌','age':23}]";
	
	/**包含一个Result对象和两个User对象的json字符串*/
	static String str3 = 	"[{'state':0,'reason':'注册成功'}," +
							"{'name':'谷歌','age':23}," +
							"{'name':'微软','age':20}]";

	/**google的json转换工具,能将对象转换为json字符串,也可以将json字符串还原为对象*/
	static Gson gson = new Gson();
	
	public static void main(String[] args){
		//json包含单个对象,解析为单个对象
		User user = null;
		user = gson.fromJson(str1,User.class);
		System.out.println(str1+"\n解析为对象:\n"+user.toString()+"\n\n");
		
		//json包含多个相同对象,解析为对象list
		System.out.println(str2+"\n解析为对象list:");
		List<User> users1 = gson.fromJson(str2, new TypeToken<List<User>>(){}.getType());
		for(User u:users1){
			System.out.println(u.toString());
		}
		//将对象list转换为json
		String jsons = gson.toJson(users1);//这个users1是上面生成的List<User>
		System.out.println("\n\nList<User> users1  转换为json字符串:\n"+jsons);
		
		//不同对象解析为list
		List<User> users2 = new ArrayList<User>();
		State state = null ;
		JSONArray jsonarray = null;
		try {
			
			jsonarray = new JSONArray(str3);
			
			for(int i = 0;i<jsonarray.length();i++){
				//这里已知str3中包含User和State两种对象,并且str3中第一个对象是State,其余都是User
				if(i==0){
					state = gson.fromJson(jsonarray.getJSONObject(i).toString(), State.class);
				}
				else {
					User u = null;
					u = gson.fromJson(jsonarray.getJSONObject(i).toString(), User.class);
					users2.add(u);
				}
			}
			
			System.out.println("\n\n"+str3+"\n解析为对应对象:");
			System.out.println(state.toString());
			for(User u:users2){
				System.out.println(u.toString());
			}
			
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}
	
	public class State{
		public int state;
		public String reason;
		
		@Override
		public String toString() {
			return "状态:\n state=" + state + ", reason=" + reason;
		}		
	}
	
	public class User{
		public int age;
		public String name;
		
		@Override
		public String toString() {
			return "用户:\n name=" + name + ", age=" + age;
		}	
	}
}

运行结果:


{"name":"微软","age":20}
解析为对象:
用户:
 name=微软, age=20



[{"name":"微软","age":20},{'name':'谷歌','age':23}]
解析为对象list:
用户:
 name=微软, age=20
用户:
 name=谷歌, age=23



List<User> users1  转换为json字符串:
[{"age":20,"name":"微软"},{"age":23,"name":"谷歌"}]



[{'state':0,'reason':'注册成功'},{'name':'谷歌','age':23},{'name':'微软','age':20}]
解析为对应对象:
状态:
 state=0, reason=注册成功
用户:
 name=谷歌, age=23
用户:
 name=微软, age=20


用到的Gson.jar和org.json.jar下载地址

http://download.csdn.net/detail/whereyougo/8003931

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值