json在java中的使用

一、背景

21世纪初,Ddouglas Crockford寻找一种简便的数据交换格式,能够在服务器之间交换数据,
当时通过数据交换语言是XML,但是Douglas Crockford觉得XML的生成和解析都太麻烦了,所以
提出了一种简化的数据格式JSON
JSON的规格非常简单,只用一个页面几百个字就能说的清除,而且Douglas Crockford声称这个

规格永远不必升级,应为该规定的都规定了

二、三种基本数据格式类型

 

第一种是标量(scalar),也就是单个字符串(Stirng)或是数字(number),如“上海”这个单独的词

第二种类型是序列(sequence),也就是相关的数据按照一定的顺序并列在一起,又叫做数组(array)

或列表(list),如“北京,上海”.

 

第三种类型是映射(mapping),也就是键/值对(key/value),即数据有一个名称,还有一个与之对应
的值,又称作散列(hash)或字典(dictionnary),比如“首都:北京”。
 

三、什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,
但是也使用了类似于C语言家族的习惯

优点:

1.支持多语言包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。
2.易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

缺点:

1.要求字符集必须是Unicode,约束性强
2.语法严禁,必须符合JSON语法规则


案例:
{"name":"tom","age":20}
{"first":{"name":"tom","age":20},"second":{"name":"jack","age":24}}
[{'name':'成龙','age':50},{'name':'李冰冰','age':35}]

 

四、四个基本原则

1.并列的数据之间使用(“,”)f分别
2.映射用冒号(“:”)标识
3.并列数据的集合(数组)使用方括号(“[]”)标识

4.映射的集合(对象)用大括号(“{}”)标识

 

五、JSON在JAVA中的使用

json在java中的使用其实就是编码和解码的过程

编码:将数据编码成json格式

解码:将json个数是数据或对象转为你需要的类型

 

使用json需要的jar包

如果是maven工程,如下配置可以引入json的系列jar包

注:<classifier>jdk15</classifier>这里是要求写上的,声明jdk版本实现,不然无法引入,因为还有jdk13和jdk15两个版本实现之分

两个基本对象JSONObject和JSONArray于其他数据进行转换

5.1JSONObject

 

	        JSONObject json = new JSONObject();
		json.put("name", "tom");
		json.put("age", 20);
		System.out.println(json);//{"age":20,"name":"tom"}
		/*
		 * 下边的取值方式,第一种get通过key取值,返回Object类型的value值
		 * 				第二种getString取出指定类型的value值,如下返回String类型,取不到值会抛出异常
		 * 				第三种optString取出指定类型的value值,取不到值不会抛出异常
		 * */		
		System.out.println(json.get("name"));
		System.out.println(json.getString("name"));
		System.out.println(json.optString("name"));

 

 

 

5.2JSONArray

 

                /*
		 * JSONArray
		 * 存放数据的时候需要逐个存放,从0索引开始,
		 * 不能越界存放,需要将前边的存放后才能存后边的
		 * 如:不能索引存了1后边的索引为3,只能一次递增存放,不让会报索引越界异常
		 * 存放的时候,索引可以不写默认从0递增
		 * 取值的时候,可以通过索引来取
		 */
		JSONArray jsonArray = new JSONArray();
		jsonArray.add(0,"张三");
		jsonArray.add(1,"李四");
		jsonArray.add(2,"王五");
		jsonArray.add(3,"赵六");
		System.out.println(jsonArray);//["张三","李四","王五","赵六"]
		System.out.println(jsonArray.get(0));//张三

 

 

 

 5.3 将多个JSONObject--->JSONArray

 

                JSONObject json1 = new JSONObject();
		json1.put("name", "rose");
		json1.put("age", 20);
		JSONObject json2 = new JSONObject();
		json2.put("name", "jack");
		json2.put("age", 20);
		
		JSONArray jsonArray2 = new JSONArray();
		jsonArray2.add(json1);
		jsonArray2.add(json2);
		System.out.println(jsonArray2);//[{"age":20,"name":"rose"},{"age":20,"name":"jack"}]
		System.out.println(jsonArray2.get(1));//{"age":20,"name":"jack"}

 

 

 

5.4JSONArray ---> JSONObject

 

通过从JSONArray通过索引取出JSONObject

 

                JSONObject jsonObject1 = jsonArray2.getJSONObject(0);
		System.out.println("JSONArray ---> JSONObject:"+jsonObject1);

 

 

 

5.5(JSON)String --> JSONObject

 

 

	        String jsonStr = "{'name':'成龙','age':50}";
		JSONObject json3 = JSONObject.fromObject(jsonStr);
		System.out.println(json3);//{"age":50,"name":"成龙"}

 

 

5.6(JSON)String ---> JSONArray

json字符串需要转成JSONArray必须是json字符串数组

                String jsonStrs = "[{'name':'成龙','age':50},{'name':'李冰冰','age':35}]";
		JSONArray jsonArray4 = JSONArray.fromObject(jsonStrs);
		System.out.println(jsonArray4);//[{"age":50,"name":"成龙"},{"age":35,"name":"李冰冰"}]

 

 

 

5.7Object ---> JSONObejct or JSONArray

 

User(bean) --> JSONObject

 

	        /*
		 * User(bean) --> JSONObject
		 * 会将bean的属性作为key,值作为value
		 */
		User user = new User();
		user.setName("tom");
		user.setAge(20);
		JSONObject jsonObject2 = JSONObject.fromObject(user);
		System.err.println(jsonObject2);//{"name":"tom","age":20}


list --->JSONArray

 

 

 

 

                User user2 = new User();
		user2.setName("jack");
		user2.setAge(21);
		List<User> list=new ArrayList<User>();
		list.add(user);
		list.add(user2);
		JSONArray jsonArray3 = JSONArray.fromObject(list);
		System.out.println(jsonArray3);//[{"age":20,"name":"tom"},{"age":21,"name":"jack"}]

 

 

 

 

 

5.8 jsonStirng--->Bean

(JSON)String -->JSONObeject---Bean
key值对应bean中的属性值
json字符串 中key可以不加""或'',即可以为任意类型,不过value值如果为字符串一定要加""或'',不是字符串可以不加
不过建议key都使用""或''

 

	        String jsonStr2 = "{'name':'成龙','age':50}";
		JSONObject json4 = JSONObject.fromObject(jsonStr2);
		User user3 = (User) JSONObject.toBean(json4, User.class);
		System.out.println(user3.toString());//User [name=成龙, age=50]

 

 

(JSON)String --->JSONArray-->Bean[]
 

	        String jsonStrs2 = "[{'name':'成龙','age':50},{'name':'李冰冰','age':35}]";
		JSONArray jsonArray5 = JSONArray.fromObject(jsonStrs2);
		User[] userS = (User[]) JSONArray.toArray(jsonArray5, User.class);
		System.out.println(userS[0]);//User [name=成龙, age=50]

 

5.9JSON-->MAP or List

http://www.tuicool.com/articles/BzQrayA

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值