1、json的定义
由键值对组成,由花括号包围,键用引号引起,与值用冒号隔开,多组键值对利用逗号隔开。
注:键是字符串,但是值可以有多种类型,有数值型、字符串、布尔型、数组、json,且数组中可以套再套json。
let student = {
34;name": "lls",
"age": 18,
"isMarry": false,
"parentName": ["root", "root"],
"parent": [{
"name": "root",
"age": 50
}, {
"name": "root",
"age": 51,
"isWoman": false
}]
}
2、json的访问
json为一个普通的工具,key就相称于属性,可以通过打点+属性去获取value。
// json的访问
console.log(student.name)
console.log(student.age)
console.log(student.isMarry)
console.log(student.parent[0].name)
console.log(student.parent[0].age)
console.log(student.parent[1].name)
console.log(student.parent[1].age)
console.log(student.parent[1].isWoman)
3、json的转换
json以工具或者字符串的形式存在,两者之间可以相互转换。
操作数据时,须要json的工具模式;而数据交流时须要json的字符串模式。
// json工具转字符串
console.log(student)
let studentStr = JSON.stringify(student)
console.log(studentStr)
// json字符串转json工具
let studentJson = JSON.parse(studentStr)
console.log(studentJson)
4、json在Java中利用
java中json的常见转换目标,JavaBean、List、Map。须要干系解析json的jar包,这里利用Google的gson.jar。
A.JavaBean
/
JavaBean转Json
/
@Test
public void test1() {
Person p = new Person("root", 18, false, new String[]{"root", "root"},
new Person[]{new Person("root", 50, true, null, null),
new Person("root", 51, true, null, null)});
//创建Gson工具
Gson gson = new Gson();
//将JavaBean转换为json的字符串模式。
String s = gson.toJson(p);
System.out.println(s);
//输出
//{"name":"root","age":18,"isMarry":false,"parentName":["root","root"],
// "parent":[{"name":"root","age":50,"isMarry":true},{"name":"root","age":50,"isMarry":true}]}
//将json的字符串模式转换为JavaBean
Person person = gson.fromJson(s, Person.class);
System.out.println(person);
//输出
//Person{name='root', age=18, isMarry=false, parentName=[root, root],
// parent=[Person{name='root', age=50, isMarry=true, parentName=[null, null], parent=[null, null]},
// Person{name='root', age=51, isMarry=true, parentName=[null, null], parent=[null, null]}]}
}
B.List
/
Json 与 List
/
@Test
public void test2() {
Person p1 = new Person("root1", 18, false, null, null);
Person p2 = new Person("root2", 19, false, null, null);
List<Person> pList = new ArrayList<>();
pList.add(p1);
pList.add(p2);
//创建Gson工具
Gson gson = new Gson();
//将list转换为json字符串模式
String s = gson.toJson(pList);
System.out.println(s);
//输出
//[{"name":"root1","age":18,"isMarry":false},{"name":"root2","age":19,"isMarry":false}]
//将json字符串模式转换为List类型
Type type = new PersonListType().getType();
List<Person> personList = (List<Person>)gson.fromJson(s, type);
personList.forEach(System.out::println);
}
package com.xhu.pojo;
import com.google.gson.reflect.TypeToken;
import java.util.List;
public class PersonListType extends TypeToken<List<Person>> {
}
C.Map
/
Map 与json的转换
/
@Test
public void test3() {
Map<Integer, Person> m = new HashMap<>();
for (int i = 0; i < 10; i++) {
Person person = new Person();
person.setName(String.valueOf(i));
m.put(i, person);
}
//创建Gson工具
Gson gson = new Gson();
//Map 转json的字符串模式
String s = gson.toJson(m);
System.out.println(s);
//json字符串模式转Map
Map<Integer, Person> map = gson.fromJson(s, new TypeToken<Map<Integer, Person>>() {
}.getType());
map.values().forEach(System.out::println);
}
二、AJAXAJAX(Asynchronous JavaScript And XML),XML是一种传输数据的一个格式,现在普遍用JSON。
浸染)用js异步发送要求,局部更新数据。
<script type="text/javascript">
function ajaxRequest() {
// 1、我们首先要创建XMLHttpRequest
let xhr = new XMLHttpRequest()
// 2、调用open方法设置要求参数,true表示异步,false表示必须同步实行下面的代码,即必须相应回来了才能实行下面的代码。
xhr.open("get", "http://www.baidu.com", true);
// 3、在send方法前绑定onreadystatechange事宜,处理要求完成后的操作。
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
let object = JSON.parse(xhr.responseText)
console.log(object);
document.getElementById("#name").value = object.name
document.getElementById("#password").value = object.password
}
}
// 4、调用send方法发送要求
xhr.send()
}
</script>
注:可以参考官方API文档,做到知其然,还知其以是然。
注:也可以参考Jquery的get、post、getJson。
JQuery 中的 Ajax 要求,
$.ajax 方法 url type data success dataType
$.get 方法和$.post 方法 url data callback type
$.getJSON 方法 url data callback
表单序列化 serialize(),将form表单中的name和value转换成name1=value1&name2=value2&…name=value的形式。
三、I18N1、Core
可选择网页的展现措辞,不改变样式,只改变内容。
Core在于,工具类ResourceBundle来关联当地信息Locale和不同措辞配置文件,然后根据不同的Locale信息读相应的配置文件信息。
2、Properties
i18n_en_US_properties,
username=username
password=password
sex=sex
age=age
regist=regist
boy=boy
email=email
girl=girl
reset=reset
submit=submit
i18n_zh_CN.properties,
username=用户名
password=密码
sex=性别
age=年事
regist=注册
boy=男
girl=女
email=邮箱
reset=重置
submit=提交
3、Java实现
@Test
public void testI18n(){
// 得到我们须要的 Locale 工具
Locale locale = Locale.CHINA;
// 通过指定的 basename 和 Locale 工具,读取 相应的配置文件
ResourceBundle bundle = ResourceBundle.getBundle("i18n", locale);
System.out.println("username:" + bundle.getString("username"));
System.out.println("password:" + bundle.getString("password"));
System.out.println("Sex:" + bundle.getString("sex"));
System.out.println("age:" + bundle.getString("age"));
}
}
4、JSTL的fmt替代Java的配置和输出
<%--1 利用标签设置 Locale 信息--%>
<fmt:setLocale value="" />
<%--2 利用标签设置 baseName--%>
<fmt:setBundle basename=""/>
<%--3 输出指定 key 的国际化信息--%>
<fmt:message key="" />
5、Case
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <%--1 利用标签设置 Locale 信息--%>
<fmt:setLocale value="${param.locale}"/>
<%--2 利用标签设置 baseName--%>
<fmt:setBundle basename="i18n"/>
<a href="i18n_fmt.jsp?locale=zh_CN">中文</a>| <a href="i18n_fmt.jsp?locale=en_US">english</a>
<center>
<h1><fmt:message key="regist"/></h1>
<table>
<form>
<tr>
<td><fmt:message key="username"/></td>
<td><input name="username" type="text"/></td>
</tr>
<tr>
<td><fmt:message key="password"/></td>
<td><input type="password"/></td>
</tr>
<tr>
<td><fmt:message key="sex"/></td>
<td><input type="radio"/><fmt:message key="boy"/>
<input type="radio"/><fmt:message key="girl"/>
</td>
</tr>
<tr>
<td><fmt:message key="email"/></td>
<td><input type="text"/></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="reset" value="<fmt:message key="reset" />"/>
<input type="submit" value="<fmt:message key="submit" />"/></td>
</tr>
</form>
</table>
<br/> <br/> <br/> <br/></center>
</body>
</html>
总结1)JSON
2)AJAX
3)I18N