JSON
一、JSON
1.JSON是什么
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是js提供的一种数据交换格式!
2.json的语法
- {}:是对象!
- 属性名必须使用双引号括起来!单引不行!!!
- 属性值:
- null
- 数值
- 字符串
- 数组:使用[]括起来
- boolean值:true和false
3.应用json
- var person = {"name":"zhangSan", "age":18, "sex":"male"};
- alert(person.name+","+person.age+","+person.sex);
4.json与xml比较
- 可读性:XML胜出
- 解析难度:JSON本身就是JS对象(主场作战),所以简单很多
- 流行度:XML已经流行好多年,但在AJAX领域,JSON更受欢迎。
5.示例:
1 package web.servlet;
2
3 import javax.servlet.ServletException;
4 import javax.servlet.annotation.WebServlet;
5 import javax.servlet.http.HttpServlet;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8 import java.io.IOException;
9
10 @WebServlet(name = "AServlet",urlPatterns = "/AServlet")
11 public class AServlet extends HttpServlet {
12 protected void doGet(HttpServletRequest request, HttpServletResponse response)
13 throws ServletException, IOException {
14 /*
15 * 向客户端发送json串
16 * */
17 String str = "{"name":"zhangsan","age":18,"sex":"male"}";
18 response.getWriter().print(str);
19 System.out.println(str);
20 }
21 }
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 <html>
4 <head>
5 <title>Title</title>
6 <script type="text/javascript">
7 //创建异步对象
8 function createXMLHttpRequest() {
9 try {
10 return new XMLHttpRequest();
11 }catch (e){
12 try{
13 return ActiveXObject("Msxml2.XMLHTTP");
14 }catch (e){
15 try {
16 return ActiveXObject("Microsoft.XMLHTTP");
17 }catch (e) {
18 alert("您用的是什么浏览器啊?")
19 throw e;
20 }
21 }
22 }
23 }
24 window.onload = function () {
25 //获取btn元素
26 var btn = document.getElementById("btn");
27 btn.onclick = function () { //给按钮的点击事件上添加监听
28 //使用ajax得到服务器端响应,把结果显示到h3中
29 //1、得到request
30 var xmlHttp = createXMLHttpRequest();
31 //2、连接
32 xmlHttp.open("GET","<c:url value="/AServlet"/>",true);
33 //3、发送
34 xmlHttp.send(null);
35 //4、给xmlHttp的状态改变事件上添加监听
36 xmlHttp.onreadystatechange =function () {
37 //双重判断
38 if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
39 var text = xmlHttp.responseText;//它是一个json串
40 var person = eval("("+text+")");
41 var s = person.name+","+person.age+","+person.sex;
42 document.getElementById("h3").innerHTML = s;
43 }
44 };
45
46 };
47 };
48 </script>
49 </head>
50 <body>
51 <%-- 点击按钮后,把服务器响应的数据显示到h3元素中 --%>
52 <button id="btn">点击这里</button>
53 <h1>JSON之Hello World</h1>
54 <h3 id="h3"></h3>
55 </body>
56 </html>
二、json-lib
1. 是什么?
- 它可以把javabean转换成json串
- json-lib.jar下载链接:https://sourceforge.net/projects/json-lib/files/json-lib/json-lib-2.4/
2. 核心类
- JSONObject --> Map
- toString();
- JSONObject map = JSONObject.fromObject(person):把对象转换成JSONObject对象
- JSONArray --> List
- toString()
- JSONArray jsonArray = JSONObject.fromObject(list):把list转换成JSONArray对象
3.示例:
1 package demo1;
2
3 import Person.Person;
4 import net.sf.json.JSONArray;
5 import net.sf.json.JSONObject;
6 import org.junit.Test;
7 import java.util.ArrayList;
8 import java.util.List;
9
10 /**
11 * 演示JSON-lib小工具
12 */
13 public class Demo1 {
14 @Test
15 public void fun1() {
16 JSONObject map = new JSONObject();
17 map.put("name","zhangsan");
18 map.put("age",25);
19 map.put("sex","male");
20 String s = map.toString();
21 System.out.println(s);
22 }
23 /*
24 * 当你已经有一个Person对象时,可以把Person转换成JSONObject对象
25 */
26 @Test
27 public void fun2() {
28 Person p = new Person("lisi",32,"female");
29 //把对象转换成JSONObject类型
30 JSONObject map = JSONObject.fromObject(p);
31 System.out.println(map.toString());
32 }
33 /**
34 * JSONArray
35 */
36 @Test
37 public void fun3() {
38 Person p1 = new Person("zhangsan",25,"male");
39 Person p2 = new Person("lisi",32,"female");
40
41 JSONArray list = new JSONArray();
42 list.add(p1);
43 list.add(p2);
44
45 System.out.println(list.toString());
46 }
47 /**
48 * 原来就有一个List,我们需要把List转换成JSONArray
49 */
50 @Test
51 public void fun4 () {
52 Person p1 = new Person("zhangsan",25,"male");
53 Person p2 = new Person("lisi",32,"female");
54 List<Person> list = new ArrayList<Person>();
55 list.add(p1);
56 list.add(p2);
57
58 System.out.println(JSONArray.fromObject(list).toString());
59 }
60 }
三、fastjson主要的使用入口
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
使用示例:
1 package junit.test;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import com.alibaba.fastjson.JSON;
9 import com.alibaba.fastjson.TypeReference;
10
11 public class TestFastJson {
12
13 static class Person{
14 private String id ;
15 private String name;
16 private int age ;
17
18 public Person(){
19
20 }
21 public Person(String id,String name,int age){
22 this.id=id;
23 this.name=name;
24 this.age=age;
25 }
26 public String getId() {
27 return id;
28 }
29 public void setId(String id) {
30 this.id = id;
31 }
32 public String getName() {
33 return name;
34 }
35 public void setName(String name) {
36 this.name = name;
37 }
38 public int getAge() {
39 return age;
40 }
41 public void setAge(int age) {
42 this.age = age;
43 }
44 @Override
45 public String toString() {
46 return "Person [age=" + age + ", id=" + id + ", name=" + name + "]";
47 }
48
49
50 }
51 public static void main(String[] args) {
52 method1();
53 method2();
54 method3();
55 method4();
56 }
57
58 static void method1(){
59 System.out.println("javabean转化示例开始----------");
60 Person person = new Person("1","fastjson",1);
61
62 //这里将javabean转化成json字符串
63 String jsonString = JSON.toJSONString(person);
64 System.out.println(jsonString);
65 //这里将json字符串转化成javabean对象,
66 person =JSON.parseObject(jsonString,Person.class);
67 System.out.println(person.toString());
68
69 System.out.println("javabean转化示例结束----------");
70 }
71
72 static void method2(){
73 System.out.println("List<javabean>转化示例开始----------");
74
75 Person person1 = new Person("1","fastjson1",1);
76 Person person2 = new Person("2","fastjson2",2);
77 List<Person> persons = new ArrayList<Person>();
78 persons.add(person1);
79 persons.add(person2);
80 String jsonString = JSON.toJSONString(persons);
81 System.out.println("json字符串:"+jsonString);
82
83 //解析json字符串
84 List<Person> persons2 = JSON.parseArray(jsonString,Person.class);
85 //输出解析后的person对象,也可以通过调试模式查看persons2的结构
86 System.out.println("person1对象:"+persons2.get(0).toString());
87 System.out.println("person2对象:"+persons2.get(1).toString());
88
89 System.out.println("List<javabean>转化示例结束----------");
90 }
91 }


浙公网安备 33010602011771号