JSON及AJAX超详细笔记

2024-07-12 1861阅读

2. JSON的解析

==============================================================================

2.1 利用FastJSON解析JSON


一个Java库,可以将Java对象转换为JSON格式,也可以将JSON字符串转换为Java对象;采用“假定有序快速匹配”算法把性能提升到极致,是目前Java语言中最快的JSON库;

  • 需要在lib文件夹下导入fastjson的jar包;

    2.1.1 FastJSON的特点

    • 快速:
      比其它任何基于Java的解析器和生成器更快
      
      • 强大:
        支持普通JDK类包括任意Java Bean Class、Collection、Map、Date
        
        • 0依赖
          除了JDK没有依赖其他类库
          
          • 开源

            2.1.2 FastJSON中常用方法

            • toJSONString():将对象转换为JSON对象
              • parseObject():将JSON字符串转换成对象
                • public static final JSONObject parseObject(String text);: 把JSON文本parse成JSONObject
                  • public static final T parseObject(String text, Class clazz); :把JSON文本parse为JavaBean
                    • public static final JSONArray parseArray(String text); :把JSON文本parse成JSONArray
                      • public static final List parseArray(String text, Class clazz); :把JSON文本parse成JavaBean集合

                        2.1.3 案例

                        package com.sx.kaka.test;

                        import java.util.ArrayList;

                        import java.util.List;

                        import com.alibaba.fastjson.JSON;

                        import com.sx.kaka.entity.Student;

                        public class FastJSONTest {

                        public static void main(String[] args) {

                        new FastJSONTest().fromStringToJavaObj();

                        new FastJSONTest().fromStringArrayToJavaArray();

                        new FastJSONTest().fromJavaObjToJson();

                        new FastJSONTest().fromJavaObjArrayToJson();

                        }

                        //将字符串对象转成java对象

                        public void fromStringToJavaObj(){

                        //编写JSON字符串

                        String jsonStr=“{‘id’:1001,‘name’:‘kaka’,‘sex’:‘man’,‘age’: 23}”;

                        //将字符串转成Java对象

                        Student stu = JSON.parseObject(jsonStr, Student.class);

                        System.out.println(stu);

                        }

                        //将字符串数组转java数组

                        public void fromStringArrayToJavaArray(){

                        //编写JSON数组字符串

                        String jsonStringArray = “[‘kaka0’,‘kaka1’,‘kaka2’]”;

                        //将字符串转成String类型的集合

                        List array = JSON.parseArray(jsonStringArray, String.class);

                        System.out.println(array);

                        }

                        //将java对象转成json字符串

                        public void fromJavaObjToJson(){

                        Student stu = new Student(1001,“kaka”,“man”,23);

                        String jsonString = JSON.toJSONString(stu);

                        System.out.println(jsonString);

                        }

                        //将java对象数组转成json字符串

                        public void fromJavaObjArrayToJson(){

                        List list = new ArrayList();

                        for(int i = 0; i

                        list.add(new Student(1001+i,“kaka”+i,“man”,20+i));

                        }

                        String jsonString = JSON.toJSONString(list);

                        System.out.println(jsonString);

                        }

                        }

                        JSON及AJAX超详细笔记

                        2.2 利用Jackson解析JSON


                        一个能够将Java对象序列化为JSON字符串,同样可以将JSON字符串反序列化为Java对象;方法为:readValue和writeValue;

                        2.2.1 Jackson的三个jar包

                        • 需要在lib文件夹下导入jackjson-annotations、jackson-core、jackson-databind三个jar包;
                          • jackson-core jar:流的处理,定义了底层的streaming API和实现了Json特性;
                            • jackson-annotations jar:包含了标准的Jackson注解;
                              • jackson-databind jar:实现了数据绑定和对象序列化,它依赖于streaming和annotations的包;

                                2.2.2 处理Json

                                Jackson提供了三种可选的Json处理方法:

                                • Streaming API:是效率最高的处理方式(开销低、读写速度快,但程序编写复杂度高)
                                  • Tree Model:树模型是最灵活的处理方式
                                    • Data Binding:数据绑定是最常用的处理方式

                                      2.2.3 Data Binding处理方式

                                      主要使用ObjectMapper来操作Json,如果是解析就必须要有setters,且setters必须是public修饰的,否则属性的值将会为null。

                                      如果是生成那么必须有getters,且getters必须是public修饰的。 如果属性不是private修饰,那么可以不用有getters和setters;

                                      要点:

                                      • ObjectMapper mapper = new ObjectMapper(); :获取JackSon主操作类对象
                                        • mapper.writeValue(obj); :将传入的对象序列化为json,返回给调用者
                                          • mapper.writeValueAsString(Object obj):String:将java对象数组转成json,传入的对象序列化为json,返回给调用
                                            • mapper.readValue(jsonFile, Bean.class/Collection);:将字符串对象转成java对象
                                              • mapper.readValue(jsonString . TypeReference >):List:返回List集合

                                                特点:在java中使用jack转json时java字符串需要使用双引号,建议使用转义字符;

                                                2.2.4 案例

                                                package com.sx.kaka.test;

                                                import java.io.IOException;

                                                import java.util.ArrayList;

                                                import java.util.List;

                                                import com.fasterxml.jackson.core.JsonParseException;

                                                import com.fasterxml.jackson.core.JsonProcessingException;

                                                import com.fasterxml.jackson.core.type.TypeReference;

                                                import com.fasterxml.jackson.databind.JsonMappingException;

                                                import com.fasterxml.jackson.databind.ObjectMapper;

                                                import com.sx.kaka.entity.Student;

                                                public class JacksonTest {

                                                public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {

                                                new JacksonTest().fromStringToJavaObj();

                                                new JacksonTest().fromStringArrayToJavaArray();

                                                new JacksonTest().fromJavaObjToJson();

                                                new JacksonTest().fromJavaObjArrayToJson();

                                                }

                                                //将字符串对象转成java对象

                                                public void fromStringToJavaObj() throws JsonParseException, JsonMappingException, IOException{

                                                //编写JSON字符串

                                                String jsonStr=“{“id”:1001,“name”:“kaka”,“sex”:“man”,“age”: 23}”;

                                                //获取JackSon主操作类对象

                                                ObjectMapper mapper = new ObjectMapper();

                                                Student stu = mapper.readValue(jsonStr, Student.class);

                                                System.out.println(stu);

                                                }

                                                //将字符串数组转java数组

                                                public void fromStringArrayToJavaArray() throws JsonParseException, JsonMappingException, IOException{

                                                //编写JSON数组字符串

                                                String jsonStringArray = “[“kaka0”,“kaka1”,“kaka2”]”;

                                                //获取JackSon主操作类对象

                                                ObjectMapper mapper = new ObjectMapper();

                                                //第一个参数:json字符串

                                                //第二个参数:类型引用的抽象类,需要动态创建一个他的指定类型(List)对象

                                                ArrayList readValue = mapper.readValue(jsonStringArray, new TypeReference(){});

                                                System.out.println(readValue);

                                                }

                                                //将java对象转成json字符串

                                                public void fromJavaObjToJson() throws JsonProcessingException{

                                                Student stu = new Student(1001,“kaka”,“man”,23);

                                                //获取JackSon主操作类对象

                                                ObjectMapper mapper = new ObjectMapper();

                                                String string = mapper.writeValueAsString(stu);

                                                System.out.println(string);

                                                }

                                                //将java对象数组转成json字符串

                                                public void fromJavaObjArrayToJson() throws JsonProcessingException{

                                                List list = new ArrayList();

                                                for(int i = 0; i

                                                list.add(new Student(1001+i,“kaka”+i,“man”,20+i));

                                                }

                                                //获取JackSon主操作类对象

                                                ObjectMapper mapper = new ObjectMapper();

                                                String string = mapper.writeValueAsString(list);

                                                System.out.println(string);

                                                }

                                                }

                                                JSON及AJAX超详细笔记

                                                2.3 浏览器(JS)处理JSON对象


                                                • JSON.stringify():把js对象转成json字符串的
                                                  • JSON.parse():把json字符串转成js对象的

                                                    2.3.1 案例

                                                    JS解析JSON

                                                    JSON及AJAX超详细笔记

                                                    JSON及AJAX超详细笔记

                                                    JSON及AJAX超详细笔记

                                                    3. AJAX

                                                    ===========================================================================

                                                    AJAX全称Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),AJAX 不是新的编程语言,而是一种使用现有标准的新方法;不需要任何浏览器插件,但需要用户在允许JavaScript的浏览器上执行;

                                                    • AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

                                                      3.1 工作原理


                                                      1. 浏览器创建XMLHttpRequest对象;
                                                      1. 浏览器初始化XMLHttpRequest对象;
                                                      1. 由XMLHttpRequest对象向服务器发出请求;
                                                      1. 浏览器接收其他用户的操作;
                                                      1. 服务器接到请求后调用业务模型处理并给XMLHttpRequest一个响应的结果;
                                                      1. XMLHttpRequest对象收到响应结果并进行处理;
                                                      1. 利用修改dom模型节点特征来更新页面局部从而实现局部刷新;

                                                      3.2 Ajax应用场景


                                                      • 运用XHTML+CSS来表达资讯;
                                                        • 运用JavaScript操作DOM(Document Object Model)来执行动态效果;
                                                          • 运用XML和XSLT操作资料;

                                                            3.3 Ajax编程


                                                            步骤:

                                                            1. 创建XmlHttpRequest对象;
                                                            var xmlhttp = new XMLHttpRequest();
                                                            
                                                            微软版本的:var xmlhttp = new ActiveXObject(“Microsoft.XMLHttp”);
                                                            
                                                            1. 初始化XmlHttpRequest对象;
                                                            *   **使用open方法设定请求参数;**
                                                            
                                                                open(method,url,async)
                                                            
                                                            *   **使用onreadystatechange设定回调函数;**
                                                            
                                                                存储函数或者函数名,当readyState属性改变时,就会调用该函数;
                                                            
                                                                readState:存有XmlHttpRequest的状态,从0~4发生变化
                                                            
                                                                *   0:请求未初始化
                                                            
                                                                *   1:服务器连接已经建立
                                                            
                                                                *   2:请求已接收
                                                            
                                                                *   3:请求处理中
                                                            
                                                                *   4:请求已完成且响应已就绪状态为200
                                                            
                                                            1. 使用send方法发送请求;
                                                            send(String):参数为String时仅用于POST请求
                                                            
                                                            1. 在回调函数中处理响应结果,更新局部;
                                                            responseText:获取字符串形式的响应数据;
                                                            
                                                            responseXML:获得XML形式的响应数据;
                                                            

                                                            3.3.1 案例

                                                            AJAX
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]