day33-JSON&Ajax01

打印 上一主题 下一主题

主题 850|帖子 850|积分 2550

JSON&Ajax01

1.JSON介绍


  • JSON指的是JavaScript对象表示法( JavaScript Object Notation),JSON的本质仍然是JavaScript对象
  • JSON是轻量级的文本数据交互格式,也是前后端进行数据通讯的一种格式:

  • JSON独立于语言,即java,PHP,asp.net,go等都可以使用json
  • JSON具有自我描述性,更易理解。一句话,JSON很好用。
2.JSON快速入门

2.1JSON的定义格式
  1. var 变量名 = {
  2.     "k1":value,//Number类型
  3.     "k2":"str",//字符串类型
  4.     "k3":[],//数组类型
  5.     "k4":{},//json对象类型
  6.     "k5":[{},{}]//json数组
  7. };
复制代码
例子:
  1. var myJson = {
  2.     "key1":1234,//Number类型
  3.     "key2":"Hello",//字符串类型
  4.     "key3":[1,"he llo",2.3],//数组类型
  5.     "key4":{"age":12,"name":"jack"},//json对象类型
  6.     "key5":[  //json数组
  7.         {"k1":10,"k2":"milan"},
  8.         {"k3":30,"k4":"smith"}
  9.     ]};
复制代码
2.2格式规则

k-v形式,然后v中又可以嵌套k-v,并且每对k-v之间用逗号隔开

  • 映射(元素/属性)用冒号:表示,"名称":值,注意名称是字符串,因此要用双引号括起来
  • 并列的数据之间用逗号,分隔,如"名称1":值,"名称2":值
  • 映射的集合(对象)用大括号{}表示,如{"名称1":值,"名称2":值}
  • 并列数据的集合(数组)用方括号[]表示,如[{"名称1":值,"名称2":值},{"名称1":值,"名称2":值}]
  • 元素值类型:string,number,object,array,true,false,null
2.3入门案例
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>json快速入门案例</title>
  6.    
  7. </head>
  8. <body>
  9. <h1>json快速入门案例</h1>
  10. </body>
  11. </html>
复制代码
打开浏览器控制台,输出如下:

3.JSON对象和字符串对象转换


  • JSON.stringify(json):将一个json对象转换成为json字符串
  • JSON.parse(jsonString):将一个json字符串转换成为json对象
    转换前提是传入的字符串的格式必须满足json格式

3.1应用实例
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>JSON对象和字符串对象转换</title>
  6.    
  7. </head>
  8. <body>
  9. <h1>JSON对象和字符串对象转换</h1>
  10. </body>
  11. </html>
复制代码
打开浏览器控制台,输出如下:
3.2注意事项和细节


  • JSON.stringify(json对象)会返回对应的string,并不会影响原来json对象
  • JSON.parse(jsonString)方法会返回对应的json对象,并不会影响原来的string
  • 在定义Json对象时,可以使用单引号''或者双引号""表示字符串,甚至前面的key可以不用任何引号
    比如var json_person={"name":"jack","age":100};
    也可以写成var json_person={'name':'jack','age':100};
    或者是var json_person={name:"jack",age:100};
  • 但是在把原生字符串转成json对象时,必须使用双引号"",否则会报错
  • JSON.springfiy(json对象)方法返回的字符串都是双引号""表示的字符串,所以在语法格式正确的情况下,是可以重新转成json对象的。
例子
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>JSON和字符串转换的注意事项和细节</title>
  6.    
  7. </head>
  8. <body>
  9. <h1>JSON和字符串转换的注意事项和细节</h1>
  10. </body>
  11. </html>
复制代码
打开浏览器控制台,输出如下:
4.JSON在Java中使用

前面讲述的是前端页面中json对象和字符串之间的转化。在实际开发中,前端将json格式的字符串发送给后端,后端拿到后,可以将其转成java对象,进行其他操作,并可以在业务操作后,重新向前端发送json格式的字符串。
这意味着在Java后端中,同样有对象和字符串对象转换的需求。
4.1说明


  • Java中使用json,需要引入第三方的包 gson.jar
  • Gson是Google提供的用来在Java对象和 JSON数据之间进行映射的Java类库
  • 可以对JSON字符串和Java对象相互转换
4.2JSON在Java中的应用场景


  • Javabean对象和json字符串的相互转换
  • List对象和json字符串的相互转换
  • Map对象和json字符串的相互转换
4.3Java对象和JSON字符串互转

在项目中的lib目录下将gson.jar文件复制过来,点击add as library作为库
Javabean:Book类
  1. package com.li.json;
  2. //这是一个Javabean
  3. public class Book {
  4.     private Integer id;
  5.     private String name;
  6.     public Book(Integer id, String name) {
  7.         this.id = id;
  8.         this.name = name;
  9.     }
  10.     public Integer getId() {
  11.         return id;
  12.     }
  13.     public void setId(Integer id) {
  14.         this.id = id;
  15.     }
  16.     public String getName() {
  17.         return name;
  18.     }
  19.     public void setName(String name) {
  20.         this.name = name;
  21.     }
  22.     @Override
  23.     public String toString() {
  24.         return "Book{" +
  25.                 "id=" + id +
  26.                 ", name='" + name + '\'' +
  27.                 '}';
  28.     }
  29. }
复制代码
JavaJson:
  1. package com.li.json;
  2. import com.google.gson.Gson;
  3. public class JavaJson {
  4.     public static void main(String[] args) {
  5.         //创建一个gson对象,作为一个工具对象使用
  6.         Gson gson = new Gson();
  7.         //演示Javabean和json格式字符串的转换
  8.         Book book = new Book(10001, "三国演义");
  9.         //1.演示把一个Javabean转成json格式的字符串
  10.         String strBook = gson.toJson(book);
  11.         System.out.println("strBook=" + strBook);
  12.         //2.json字符串-->JavaBean
  13.         //(1)strBook 就是json字符串
  14.         //(2)Book.class 指定将json字符串转成Book类型的对象
  15.         //(3)底层使用反射机制来完成
  16.         Book book2 = gson.fromJson(strBook, Book.class);
  17.         System.out.println("book2=" + book2);
  18.     }
  19. }
复制代码
4.4List对象和JSON字符串互转

Book类见4.3
JavaJson:
[code]package com.li.json;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.List;public class JavaJson {    public static void main(String[] args) {        //创建一个gson对象,做为一个工具对象使用        Gson gson = new Gson();        //3.演示把List对象-->json字符串        ArrayList bookList = new ArrayList();        bookList.add(new Book(100, "天龙八部"));        bookList.add(new Book(200, "红楼梦"));        //因为把一个对象或者集合转成字符串,相对比较简单        //底层只需要遍历,按照json格式拼接返回即可        String strBookList = gson.toJson(bookList);        System.out.println("strBookList= " + strBookList);        //4.把json字符串转成-->list对象        //(1)如果要把json字符串,转成 集合 这种比较复杂的类型,需要使用Gson提供的一个类:TypeToken        //(2)这个TypeToken类在com.google.gson.reflect下面,在反射对象的时候使用        //(3)TypeToken 是一个自定义泛型类,通过TypeToken来指定我们需要转换成的类型        /*         * public class TypeToken {         *     final Class

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表