数据交换和异步请求(JSON&Ajax))

2024-06-17 1717阅读

目录

  • 一.JSON介绍
    • 1.JSON的特点
    • 2.JSON的结构
    • 3.JSON的值
    • JSON示例
    • 4.JSON与字符串对象转换
    • 5.注意事项
    • 二.JSON在Java中的使用
      • 1.Javabean to json
      • 2.List to json
      • 3.Map to JSON
      • TypeToken底层解析
      • 三.Ajax介绍
        • 1.介绍
        • 2.Ajax经典应用场景
        • 四.Ajax原理示意图
          • 1. 传统web应用
          • 2.Ajax方法
          • 五.Ajax实例
            • JavaScript原生Ajax请求方法
              • 实例代码
              • 原生Ajax问题分析
              • JQuery的Ajax请求方法
                • 常用方法
                • 实例代码

                  一.JSON介绍

                  JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机制造商协会制定的js规范)的一个子集,采用完全独立于语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。

                  1.JSON的特点

                  • 易于人阅读和编写:JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
                  • 易于机器解析和生成:有效地提升网络传输效率。
                  • 轻量级的数据交换格式:相对于XML格式的数据,JSON格式的数据体积小、传输效率高。

                    2.JSON的结构

                    JSON建构于两种结构:

                    “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。

                    值的有序列表(An ordered list of values)。

                    在多数语言中,它被理解为数组(array)。

                    3.JSON的值

                    在JSON中,值(value)可以是:

                    • 字符串(在双引号中)
                    • 数字(整数或浮点数)
                    • 对象(在花括号中)
                    • 数组(在方括号中)
                    • true/false/null

                      JSON示例

                      {  
                        "name": "John",  
                        "age": 30,  
                        "car": null,  
                        "hobbies": ["reading", "cinema", "swimming"],  
                        "spouse": {  
                          "name": "Jane",  
                          "age": 28  
                        }  
                      }
                      //这个JSON对象表示一个人,他有名字、年龄、没有车、有一些爱好,以及一个配偶对象,
                      //配偶对象也有自己的名字和年龄。
                      

                      4.JSON与字符串对象转换

                      1. JSON.stringify(json)功能: 将一个json对象转换成为 json 字符串
                      2. JSON.parse( jsonString )功能: 将一个 json字符串转换成为 json

                      实例

                      // 一个 json 对象
                      var jsonObj = {"name": "leon", age: 10};
                      //JSON 是一个 build-in 对象,内建对象,有方法可以使用
                      console.log(JSON)
                      // 把 json 对象转换成为字符串对象
                      var jsonStr = JSON.stringify(jsonObj);
                      console.log(jsonStr);
                      // 把 json 对象的字符串,转换成为 json 对象
                      var jsonObj2 = JSON.parse(jsonStr);
                      console.log(jsonObj2);
                      

                      5.注意事项

                      1. JSON.springify(json 对 象)会返回对应 string, 并不会影响原来json对象
                      2. JSON.parse(string) 函数会返回对应的 json 对象, 并不会影响原来 string
                      3. 在定义 Json 对象时, 可以使用 ’ ’ 表示字符串,

                        比如 var json_person = {“name”: “jack”, “age”: 100};

                        也可以写成 var json_person = {‘name’: ‘jack’, ‘age’: 100};

                      4. 但是在把原生字符串转成 json 对象时, 必须使用 “”, 否则会报错 比如:

                        var str_dog = “{‘name’:‘小黄狗’, ‘age’: 4}”; 转 json 就会报错

                      5. JSON.springify(json 对象) 返回的字符串, 都是 “” 表示的字符串, 所以在语法格式正确的情况下, 是可以重新转成 json 对象的.

                      二.JSON在Java中的使用

                      Java中使用JSON需要导入第三方包gson.jar

                      Gson是谷歌提供的用来在Java对象和json数组之间转化的Java类库

                      1.Javabean to json

                      class Book {
                          private Integer id;
                          private String name;
                          public Book(Integer id, String name) {
                              this.id = id;
                              this.name = name;
                          }
                          public Integer getId() {
                              return id;
                          }
                          public void setId(Integer id) {
                              this.id = id;
                          }
                          public String getName() {
                              return name;
                          }
                          public void setName(String name) {
                              this.name = name;
                          }
                          @Override
                          public String toString() {
                              return "Book{" +
                                      "id=" + id +
                                      ", name='" + name + '\'' +
                                      '}';
                          }
                      }
                      //创建一个gson对象,做完一个工具对象使用
                              Gson gson = new Gson();
                              //演示javabean 和 json字符串的转换
                              Book book = new Book(0824, "Java之父科比");
                              //1. 演示把javebean -> json字符串
                              String strBook = gson.toJson(book);
                              System.out.println("strBook=" + strBook);
                              //2. json字符串->javabean
                              //(1) strBook 就是 json字符串
                              //(2) Book.class 指定将 json字符串转成 Book对象
                              //(3) 底层是反射机制
                              Book book2 = gson.fromJson(strBook, Book.class);
                              System.out.println("book2=" + book2);
                      

                      2.List to json

                      List bookList = new ArrayList();
                              bookList.add(new Book(200, "天龙八部"));
                              bookList.add(new Book(300, "三国演义"));
                              //把对象,集合转成字符串, 相对比较简单
                              //底层只需要遍历, 按照json格式拼接返回即可
                              String strBookList = gson.toJson(bookList);
                              System.out.println("strBookList= " + strBookList);
                              
                      Type type = new TypeToken() {
                              }.getType();
                              List bookList2 = gson.fromJson(strBookList, type);
                              System.out.println("bookList2= " + bookList2);
                      

                      3.Map to JSON

                      Map bookMap = new HashMap();
                              bookMap.put("k1", new Book(400, "射雕英雄传"));
                              bookMap.put("k2", new Book(500, "西游记"));
                              String strBookMap = gson.toJson(bookMap);
                              System.out.println("strBookMap=" + strBookMap);
                              //   new TypeToken() {}.getType()=> java.util.Map
                              Map bookMap2 = gson.fromJson(strBookMap,
                                      new TypeToken() {
                                      }.getType());
                              System.out.println("bookMap2=" + bookMap2);
                      

                      TypeToken底层解析

                      (1) 如果需要把json字符串 转成 集合这样复杂的类型, 需要使用gson提供的一个类
                      (2) TypeToken , 是一个自定义泛型类, 然后通过TypeToken来指定我们需要转换成的类型
                      
                       com.google.gson.reflect
                        public class TypeToken {
                            final Class
VPS购买请点击我

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

目录[+]