概述
JavaScript 天生就支持json , 前后端非常适合通过json来传递数据
一个json的例子:
在进行前后端数据传输的过程中,要把 json 数据转换成字符串,在拿到数据后再把 字符串转回 json 前端再对拿到json数据进行处理展示。
对json数据进行访问的例子:
<script type="text/javascript">
var json = [
{
"eno": 2001,
"ename": "Lucy",
"job": "软件工程师",
"hiredate": "2020-01-28",
"dname": "研发部"
},
{
"eno": 2002,
"ename": "Mike",
"job": "销售经理",
"hiredate": "2020-01-28",
"dname": "销售部",
"customers": [
{
"name": "张三"
},
{
"name": "李四"
}
]
}
];
console.log(json);
for(var i=0;i<json.length;i++){
var emp = json[i];
document.write("<h1>");
document.write(emp.eno+" ");
document.write(emp.ename+" ");
document.write(emp.job+" ");
document.write(emp.hiredate+" ");
document.write(emp.dname+" ");
document.write("</h1>");
if(emp.customers!=null){
for(var j=0;j<emp.customers.length;j++){
var cus = emp.customers[j];
document.write("<h2>------");
document.write(cus.name+" ");
document.write("------</h2>");
}
}
}
</script>
JSON与字符串相互转换
json转字符串
var json = {"name":"张三"};
var str = JSON.stringify(json);
console.info(json);
console.info(str);
var json2 = {};
json2.id="201";
json2.name="小明";
console.log(json2);
字符串转json
var str = "{\"name\":\"张三\"}";
var json = JSON.parse(str);
console.log(str);
console.log(json);
使用Fast JSON完成 Java与JSON的交互
先导入需要的jar
例子一:单个对象
Employee employee = new Employee(201, "Lucy", 6000f, "sale");
//date也可以输入指定格式的字符串再进行转化,比下面用的这种方法要简单不少
Calendar c = Calendar.getInstance();
c.set(2019, 0, 30, 0, 0, 0);//年月日时分秒(月份从0开始,0就是1月)
employee.setHdate(c.getTime()); //getTime 获取的是时间戳,使用json注解进行格式转化!
//FastJSON中提供了JSON对象,完成对象与JSON字符串的互相转换
String json = JSON.toJSONString(employee);
System.out.println(json);
Employee emp = JSON.parseObject(json, Employee.class);
System.out.println(emp.getEname());
例子二:集合
List<Employee> employeeList = new ArrayList<Employee>();
for(int i=1;i<=100;i++) {
int eno = 200+i;
String ename = "员工"+i;
Employee employee = new Employee(eno, ename, null, null);
employeeList.add(employee);
}
String json = JSON.toJSONString(employeeList);
System.out.println(json);
List<Employee> employees = JSON.parseArray(json, Employee.class);
for(Employee e:employees) {
System.out.println(e);
}
可以使用下面这句话将json数据传递给前端,供前端调用展示
response.getWriter().print(strJosn);
FastJson的注解
private Integer eno;
private String ename;
private Float salary;
@JSONField(serialize = false)//进行json转化时忽略这一项
private String dname;
@JSONField(format = "yyyy-MM-dd")
private Date hdate;
这里使用了两个常用的注解,一个是在进行json转化时忽略这个变量
另一个是指定日期格式(将时间戳转化成正常的日期格式)