JSON

1) JSON(JavaScript Object Notation)

   一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,在JavaScript中处理JSON数据不需要任何特殊的API或工具包。

2)JSON数据结构

1.对象

    对象表示为“{}”扩起来的内容,结构为 {key:value,key:value,...}格式的键值对。是一个无序的 名称/值对集合。以

{开始,以}结束,每个名称后跟一个:,:后面是对应的值,名称/值 对之间使用,分隔。 key值必须要是string类型,值的类型可以

是:string, number, object, array, true, false, null。

例:{'name':'zhang','age':26};{'users':{'name':'zhang','age':25}};{'name':'China','city':['北京',‘上海’]}。

2.数组(jsonArray)

    数组表示为中括号“[]”扩起来的内容,是有序的value的集合。数据结构为 [value,value,value,...]的单值的结构。一个数

组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

例: ["zhangsan","lisi"];[{'name':'zhangsan','age':21},{'name':'lisi','age':20}]。

3)JSON与XML比较:

    JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加

快速度。

4)JSON解析

1.原生JSON解析

/*
 * JSON对象格式解析
 * 	1.将JSON对象格式字符串通过JSONObject.fromObject()转化为JSONObject对象
 * 	2.通过 JSONObject.toBean(JSONObject对象,Class)转化为javabean
 * */
public class TestJSONObject {

	public static void main(String[] args) {
		// JSON对象格式字符串
		String str = "{'id':110,'name':'zhangsan','sex':'male','age':18}";

		JSONObject jsonObj = JSONObject.fromObject(str);
		Student stu = (Student) JSONObject.toBean(jsonObj, Student.class);

		System.out.println(stu);

	}
}

/*
 * JSON数组格式解析
 * 	1.将JSON数组格式转换为JSONArray对象
 * 	2.通过JSONArray.toCollection(JSONArray对象, Class)将JSON数组格式转换成对象
 * */
public class TestJSONArray {
	public static void main(String[] args) {
		//JSON数组格式
		String str = "[{'id':110,'name':'zhangsan','sex':'male','age':18},{'id':120,'name':'lisi','sex':'female','age':28}]";
		
		JSONArray jsonArray = JSONArray.fromObject(str);
		
		JSONObject jsonObj = jsonArray.getJSONObject(1);
		int id = jsonObj.getInt("id");
		System.out.println(id);
		
		Collection c = JSONArray.toCollection(jsonArray, Student.class);
		
		System.out.println(c);
	}
}

//混合格式json解析
public class TestJSON2 {

	public static void main(String[] args) {
		String str = "{'name':'中国','provinces':[{'pName':'河南'},{'pName':'山西'}]}";

		JSONObject jsonObject = JSONObject.fromObject(str);
		
		Map<String,Class> map = new HashMap<String,Class>();
		map.put("provinces", Province.class);
		
		Country c = (Country) JSONObject.toBean(jsonObject, Country.class, map);
		
		System.out.println(c);
	}
}
public class TestJSON {
	public static void main(String[] args) {

		String str = "{'us':[{'name':'zhangsan','age':20},{'name':'zhangsan','age':20}]}";
		
		JSONObject jsonObject2 = JSONObject.fromObject(str);
		JSONArray jsonArray2 = jsonObject2.getJSONArray("us");
		Collection c = JSONArray.toCollection(jsonArray2, User.class);
		System.out.println(c);
		
		System.out.println("---------------自己组装JSON转化为JavaBean----------------");
		
		JSONObject jsonObj = JSONObject.fromObject(str);
		JSONArray jsonArray = jsonObj.getJSONArray("us");
		
		ArrayList<User> ulist = new ArrayList<User>();
		User user = new User();
		//循环获取JSON数组中的JSON对象
		for(int i=0;i<jsonArray.size();i++){
			
			JSONObject jsonObject = jsonArray.getJSONObject(i);
			//将获取到的数据封装进user中
			user.setName(jsonObject.getString("name"));
			user.setAge(jsonObject.getInt("age"));
			ulist.add(user);
		}
		
		Users users = new Users();
		users.setUs(ulist);
		
		
		System.out.println(users);
	
	}
}


//对象转换为JSON
public class TestToJSON {
    public static void main(String[] args) {
        User user = new User("张三", 20);
        String str = JSONObject.fromObject(user).toString();
        System.out.println(str);
            
        System.out.println("--------------------------");
        
        ArrayList<User> list = new ArrayList<User>();
        list.add(user);
        String str2 = JSONArray.fromObject(list).toString();
        System.out.println(str2);
    }
}
2.Gson解析

/*
 * GSON解析JSON
 * 
 * */
public class TestGson {

	public static void main(String[] args) {
		System.out.println("-----------------GSON解析JSON对象字符串-----------------------");
		String str = "{'id':110,'name':'zhangsan','sex':'male','age':18}";
		Gson gson = new Gson();
		Student student = gson.fromJson(str, Student.class);
		
		System.out.println(student);
		
		System.out.println("----------------GSON解析JSON数组字符串------------------------");
		String str2 = "[{'id':110,'name':'zhangsan','sex':'male','age':18},{'id':120,'name':'lisi','sex':'female','age':28}]";
		//Gson gson = new Gson();
		Type type = new TypeToken<List<Student>>(){}.getType();
		List<Student> list = gson.fromJson(str2, type);
		System.out.println(list);
		
		System.out.println("-----------------GSON解析JSON混合字符串-----------------------");
		String str3 = "{'us':[{'name':'zhangsan','age':20},{'name':'zhangsan','age':20}]}";
		//Gson gson = new Gson();
		User user = gson.fromJson(str, User.class);
		System.out.println(user);
	}

}

/*
 * 对象通过Gson转换为JSON
 * */
public class TestGsonToJson {
	public static void main(String[] args) {
		ArrayList<Users> list = new ArrayList<Users>();
		
		for(int i=0;i<2;i++){
			Users users = new Users();
			ArrayList<User> ulist = new ArrayList<User>();
			for(int j=0;j<2;j++){
				User user = new User("zs"+j, 20+j);
				ulist.add(user);
			}
			users.setUs(ulist);
			list.add(users);
		}
		
		Gson gson = new Gson();
	      String str = gson.toJson(list);
		
		System.out.println(str);
	}
}

3.FastJson

(1)普通object格式转换为对象

      String str ="{'id':110,'name':'zhangsan','sex':'male','age':18,}";

      Student s = JSON.parseObject(str, Student.class);

(2)数组格式转换为集合:

      String str = "[{'name':'zhangsan','age':20},{'name':'zhangsan','age':20}]";

      List<Student> s = JSON.parseArray(str, Student.class);

(3)对象转换为json字符串:

      普通字符串: JSON.toJSONString(s)

      格式字符串:JSON.toJSONString(s,true)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值