JSON、AJAX、i18n知识概括

79 阅读7分钟

@TOC

JSON

JSON介绍:

  • JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON 采用完全独立于语言的文本格式,而且很多语言都提供了对json 的支持(包括 C, C++, C#, Java, JavaScript, Perl, Python 等)。 这样就使得 JSON成为理想的数据交换格式。
  • json 是一种轻量级的数据交换格式。
  • 轻量级指的是跟 xml 做比较。
  • 数据交换指的是客户端和服务器之间业务数据的传递格式

JSON 在 JavaScript 中的使用:

  • json 的定义:json 是由键值对组成,并且由大括号包围。每个键由引号引起来,键和值之间使用冒号进行分隔, 多组键值对之间进行逗号进行分隔。
var jsonObj = { "key1":12, "key2":"abc", "key3":true, "key4":[11,"arr",false]};
  • json 的访问: ①json 本身是一个对象。 ②json 中的 key 我们可以理解为是对象中的一个属性。 ③json 中的 key 访问就跟访问对象的属性一样: json 对象.key
  • json 的两个常用方法:json 的存在有两种形式。 ①对象的形式存在,我们叫它 json 对象。 ②字符串的形式存在,我们叫它 json 字符串。
  • json操作场景: ①一般我们要操作 json 中的数据的时候,需要 json 对象的格式。 ②一般我们要在客户端和服务器之间进行数据交换的时候,使用 json 字符串。
  • json常用方法: ①JSON.stringify() --------------把 json 对象转换成为 json 字符串 ②JSON.parse() --------------把 json 字符串转换成为 json 对象

JSON 在 java 中的使用:

  • 对于javaben对象我们可以这样使用:
Person person = new Person("吴亦凡", 2);
//取得json对象
Gson gson = new Gson();
//对象转json字符串
String json = gson.toJson(person);
System.out.println(json);
//json字符串转对象
Person fromJson = gson.fromJson(json, Person.class);
System.out.println(fromJson);
  • 对于Map和List:Map和List实现的步骤一致。
HashMap<Integer, Person> map = new HashMap<>();
map.put(1, new Person("吴亦凡", 2));
map.put(2, new Person("蔡徐坤", 4));
//取得json对象
Gson gson = new Gson();
//map转json字符串
String json = gson.toJson(map);
System.out.println(json);
//json字符串转map,由于HashMap<Integer, Person>不能直接取得他的类对象
//因此我们需要创建一个类继承TypeToken<HashMap<Integer,Person>>,也可以实现一个匿名类
//然后调用该类的getType()方法
HashMap<Integer, Person> fromJson = gson.fromJson(json,
        new TypeToken<HashMap<Integer,Person>>(){}.getType());
System.out.println(fromJson);

AJAX

调用方式:同步,异步,回调:

  • 同步调用:同步调用是最基本并且最简单的一种调用方式, 类A的方法a()调用类B的方法b(), 一直等待b()方法执行完毕, a()方法继续往下走. 这种调用方式适用于方法b()执行时间不长的情况, 因为b()方法执行时间一长或者直接阻塞的话, a()方法的余下代码是无法执行下去的, 这样会造成整个流程的阻塞。 img
  • 异步调用:异步调用是为了解决同步调用可能出现阻塞, 导致整个流程卡住而产生的一种调用方式. 类A的方法方法a()通过新起线程的方式调用类B的方法b(), 代码接着直接往下执行, 这样无论方法b()执行时间多久, 都不会阻塞住方法a()的执行. 但是这种方式, 由于方法a()不等待方法b()的执行完成, 在方法a()需要方法b()执行结果的情况下(视具体业务而定, 有些业务比如启异步线程发个微信通知、刷新一个缓存这种就没必要), 必须通过一定的方式对方法b()的执行结果进行监听. 在Java中, 可以使用Future+Callable的方式做到这一点。 在这里插入图片描述
  • 回调: ①回调:顾名思义就是返回去调用。通俗而言: 就是A类中通过方法a()调用B类中的方法b(), 然后B类中反过来调用A类中的方法callback(), callback()这个方法就叫回调方法。 ②回调也分为同步回调异步回调差别在于是否为其开辟一条新的线程。 在这里插入图片描述

AJAX介绍:

  • AJAX 即“Asynchronous Javascript And XML”(异步 JavaScript 和XML),是指一种创建交互式网页应用的网页开发技术。
  • ajax 是一种浏览器通过 js 异步发起请求,局部更新页面的技术。
  • Ajax 请求的局部更新: ①浏览器地址栏不会发生变化 ②局部更新不会舍弃原来页面的内容

原生 AJAX 请求简介: 在这里插入图片描述 jQuery 中的 AJAX 请求简介: 在这里插入图片描述 AJAX总结:

  • 一般来说我们设置dataType都是json 类型,因为其轻量特性
  • 而success表示其回调的函数,即请求回执行的函数。
  • 而如果请求后响应得比较缓慢,那么此时回调函数会立即执行,而不会一直等待响应,这就是所谓的异步(非同步)

AJAX与HTTP对比:

  • AJAX通过xmlHttpRequest对象请求服务器服务器接受请求返数据实现刷新交互,AJAX请求头会多一个x-requested-with参数,值为XMLHttpRequest。 ①Ajax(Asynchronous Javascrpt And Xml)是一种运用于浏览器的技术,它可以在浏览器与服务器之间使用异步通信机制进行数据通信,从而允许浏览器向服务器获取少量信息而不是刷新整个页面。Ajax并不是一种新的技术,或者说它不是一种技术,它只是多种技术的综合:Javascript、Html、Css、Dom、Xml、XMLHttpRequest等技术按照一定的方式在协作中发挥各自的作用就构成了Ajax。 ②XMLHttpRequest是Ajax技术的一个核心,没有它Ajax无从运作。 ③XMLHttpRequest:XMLHttpRequest是XMLHttp组件的一个对象,使用XMLHttpRequest可以实现浏览器端与服务器端进行异步通信。通过HttpRequest对象,Web应用程序无需刷新页面就可以向服务器提交信息,然后得到服务器端的返回信息。

  • 普通http请求通过httpRequest对象请求服务器接受请求返数据需要页面刷新。

  • 再来谈谈Ajax与websocket、http,其实这三者各有优缺点。 ①websocket、ajax的出现解决的http协议的一些问题,但http依然在很多地方是好的有优势的。 ②ajax是单向(客户端到服务端),http也是单向由客户端发起的,websocket实现了双向,但他们各自有自己适合的使用场景。

i18n

i18n国际化介绍:

  • 国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问
  • 关于国际化我们想到的最简单的方案就是为不同的国家创建不同的网站,比如苹果公司,他的英文官网是: www.apple.com 而中国官网是 www.apple.com/cn。
  • 苹果公司这种方案并不适合全部公司,而我们希望相同的一个网站,而不同人访问的时候可以根据用户所在的区域显示 不同的语言文字,而网站的布局样式等不发生改变
  • 于是就有了我们说的国际化,国际化总的来说就是同一个网站不同国家的人来访问可以显示出不同的语言。但实际上这 种需求并不强烈,一般真的有国际化需求的公司,主流采用的依然是苹果公司的那种方案,为不同的国家创建不同的页 面。所以国际化的内容我们了解一下即可。
  • 国际化的英文 Internationalization,但是由于拼写过长,老外想了一个简单的写法叫做 I18N,代表的是 Internationalization 这个单词,以 I 开头,以 N 结尾,而中间是 18 个字母,所以简写为 I18N。以后我们说 I18N 和国际化是一个意思。

i18n国际化三要素:

  • 总的来说:主要还是Locale这个表示不同的时区,位置,语言的对象。 在这里插入图片描述