1. JSON 的 写法 和 简介

JSON 很常用啊 也很有用,反正比XML好又快

json简介

json的全称是JavaScript Object Notation,是一种数据交换格式,独立于编程语言,可以用来存储数据,优点是非常利于人类阅读和编写,同时也利于机器的解析和生成,同时还可以提升网络传输效率。
json的数据格式是以名-值对的方式存储的,可以将其看做是一个字符串,下面就是一个json格式的数据,对象会放到{}中,数组放到[]中

两种写法:(JAVASCRIPT 中 写法)

<script>
    let persn = {
        name:'bihu',
        age:18,
        sex:1,
        birthday:'2000-01-01'
    };

    console.log(persn.name);    //直接输出属性 也可以这样输出:
    console.log(persn['age']);  //很少用 麻烦死了...

    /*
    上面对象 下面数组
     */

    let animal = [
        {
            name:'monkey',
            count:10
        },

        {
            name:'dog',
            count: 20
        }
    ]

    console.log(animal[0].name);    //数组的话 要先获取到对象元素 然后获取到对象元素的属性即可.

</script>

在json中规定的字符编码时utf-8,几乎所有的编程语言都有解析json数据的第三方库,

因此json的应用非常多。在servlet中可以将要返回给前台的数据封装为json格式

在前台中可以使用javascript来解析,javascript已经内置了json的解析

json格式的数据是跟语言无关的,在java中也有非常多的第三方库可以解析json格式的数据,常用的有:

  • fastjson:国人开发的,是目前java语言中最快的json库
  • gson:google开发
  • jackson:Tatu Saloranta开发

下面以fastjson为例看下,自己去百度下载啊

fastjson中常用的方法:

  • JSON.toJSONString

    将JavaBean转成json格式的字符串

  • JSON.parseObject

    将json格式的字符串转换为JavaBean

代码演示:

 我们创建一个学生类: GET 和 SET 都要有 再来个构造啊【规范点请加空构造 养成好习惯 这里忘记了 随便啦】 

package temp;

import java.util.Date;

public class student {
    private String name;
    private int age;
    private char sex;
    private Date birthday;
    public student1(String name, int age, char sex, Date birthday) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.birthday = birthday;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    
    
    
}

再来个学校类:

package temp;

import java.util.List;

public class school {
    private List<student> zspt;

    public school(List<student> zspt) {
        super();
        this.zspt = zspt;
    }

    public school() {
        
    }

    public List<student> getZspt() {
        return zspt;
    }

    public void setZspt(List<student> zspt) {
        this.zspt = zspt;
    }
    
    
}

其次我们尝试用插件去生成JSON 和 解析JSON:

<%@page import="java.text.DateFormat"%>
<%@page import="com.alibaba.fastjson.JSON"%>
<%@page import="temp.school"%>
<%@page import="temp.student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <% 
                student bihu = new student("bihu",18,'男',DateFormat.getDateInstance().parse("2020-01-01"));
                student zhangsan = new student("zhangsan",21,'女',DateFormat.getDateInstance().parse("1999-12-03"));
                school zspt = new school();
                zspt.getZspt().add(bihu);
                zspt.getZspt().add(zhangsan);
                //开始生成 JSON :
                String strJSON = JSON.toJSONString(zspt);
                
                //JSON 转对象:
                school objJSON = (school)JSON.parseObject(strJSON, school.class);
                
                //然后分别装入 reques域中 在网页打印:
                request.setAttribute("json_str",strJSON );
                request.setAttribute("json_obj", objJSON);
                
                //还可以打印: 都没问题的!
                System.out.print(objJSON.getZspt().get(0).getName());
                System.out.print(objJSON.getZspt().get(0).getBirthday());                
            %>
            
            json_str : ${ json_str }
            <br>
            json_obj : ${ json_obj }
            
            
</body>
</html>

单层JSON 和 多层JSON 对比: 

{"age":18,"birthday":1577808000000,"name":"bihu","sex":"男"} 

 ----------------------------------------------------------------
 
{"zspt":

[

{"age":18,"birthday":1577808000000,"name":"bihu","sex":"男"},


{"age":21,"birthday":944150400000,"name":"zhangsan","sex":"女"}

]

}

其实不喜欢这种方式解析 JAVA有自带的 

本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14841780.html

原文地址:https://www.cnblogs.com/bi-hu/p/14841780.html