• 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 }
    
    
    
    
    
    
    
  • 相关阅读:
    PyCharm设置Python版本,你肯定不知道!
    Python学习笔记之二——Python的运行机制,一般人肯定不会
    Django开发登录功能实战
    Python基础语法总结【新手必学】
    Python爬虫实现抓取腾讯视频所有电影【实战必学】
    委托和事件:要注意的事项
    asp.net网页防刷新重复提交、防后退解决办法!
    重新复习基础使用的网上资料
    JS和CS互访【后台前台代码调用JavaScript变量以及JavaScript调用代码变量】
    重新学习基础:草稿3(2)【后续】
  • 原文地址:https://www.cnblogs.com/gdwkong/p/8191289.html
Copyright © 2020-2023  润新知