数据交换和异步请求(JSON&Ajax))
目录
- 一.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与字符串对象转换
- JSON.stringify(json)功能: 将一个json对象转换成为 json 字符串
- 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.注意事项
- JSON.springify(json 对 象)会返回对应 string, 并不会影响原来json对象
- JSON.parse(string) 函数会返回对应的 json 对象, 并不会影响原来 string
- 在定义 Json 对象时, 可以使用 ’ ’ 表示字符串,
比如 var json_person = {“name”: “jack”, “age”: 100};
也可以写成 var json_person = {‘name’: ‘jack’, ‘age’: 100};
- 但是在把原生字符串转成 json 对象时, 必须使用 “”, 否则会报错 比如:
var str_dog = “{‘name’:‘小黄狗’, ‘age’: 4}”; 转 json 就会报错
- 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
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
