栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Json概述

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Json概述

什么是Json

  • JSON 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率

  • 数据交换方式

    • xml: 张三
    • json: {“name”:“张三”}
  • JSON( Javascript Object notation )是javascript的原生对象

Json的语法格式

JSON数据有三种数据格式,分别如下:


注意:

  1. JSON数据的key值:字符串类型,必须加双引号

  2. JSON数据的value值:任意类型,如果是字符串则必须加双引号

  3. 三种数据格式举例:

    • 对象类型

      {
          "name":"张三",
          "age":34,
          "shuaima":false
      }
      
    • 数组/集合类型

      [
          {"name":"zhangsan","age":67,"addr":"上海"},
          {"name":"lisi","age":67,"addr":"上海"},
          {"name":"wangwu","age":67,"addr":"上海"}
      ]
      
    • 混合类型:

      var stu_score = {
              "name":"张三",
              "scores":[
                			{"course":"语文","score":100},
               	 		{"course":"数学","score":100},
                			{"course":"英语","score":100} 
              		]
         		}
      

Json对象和Json字符串

JSON对象

  • JSON指的是JavaScript对象表示法(JavaScript Object Notation)
  • JSON格式在语法上与创建 JavaScript 对象代码是相同的。因此可以把JSON看成是JavaScript对象。

Json对象属于严格的JS对象,key都加双引号

JSON字符串

JSON数据格式是一种文本数据,从服务器传递过来的数据有时候可能是以字符串的形式传递过来如下:

我们可以在js中调用JSON对象的parse方法,将JSON字符串转换成JSON对象:

var personJson = JSON.parse(person);

在javascrip中支持把json格式的字符串,转换为JSON对象

var jsonObj = JSON.parse('{"name":"张三","age":13}');

jsonObj = {"name":"张三","age":13}
Json:JSON格式转换

JSON对象与字符串转换

JSON对象与字符串转换的相关函数

  • JSON.stringify(object) 把json对象转为字符串 (json格式的字符串)

  • JSON.parse(string) 把字符串(json格式的字符串)转为json对象

Json转换工具介绍

JSON在js中属于对象,但是在java中属于一个json格式的字符串。

前端中,ajax请求需要dataType:json 将后台响应的json字符串,解析成json对象,才能正常使用.所以我们在后台先将数据转换为json字符串,然后前端获取更加方便。

结论:在企业开发中前端和后端之间是利用json实现数据的交互

JSON的转换工具是通过java封装好的一些jar工具包即依赖第三方开源类库,直接将java对象或集合转换成json格式的数据。

常见的jar包有以下几种:

JackSon使用步骤

开发步骤:

  1. 导入JackSon相关依赖

    
    
        com.fasterxml.jackson.core
        jackson-core
        2.9.4
    
    
        com.fasterxml.jackson.core
        jackson-databind
        2.9.4
    
    
    
    
  2. 创建java对象和集合;

  3. 使用JackSon包中提供的对象映射器类ObjectMapper类,创建该类对象

  4. 调用类中的方法String writeValueAsString(对象或集合)将对象或集合转换为json字符串

    ObjectMapper对象中的方法说明
    String writeValueAsString(Object o)将一个对象转成JSON格式的字符串

转换java对象为Json格式

  1. 将java对象—转换为—JSON对象:
{"id":1,"studentAge":10,"studentName":"张三"}
  1. 将List集合–转换为–JSON数组:
[
{ "id": 1,"studentAge": 10, "studentName": "张三"},
{"id": 2, "studentAge": 12,"studentName": "李四"}
]
  1. 将复杂对象–转换为—JSON混合数据类型:
{"code":"1001","stu":{"id":2,"studentName":"李四","studentAge":12}}
Json: JSON转换工具 - Fastjson

Fastjson介绍

fastjson作用

  1. 将java对象转成json字符串
  2. 将json字符串转成 java对象

常用API

fastjson API 入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 

public static final  T parseObject(InputStream is, Class clazz); // 将从页面获取的字节输入流中的字符数据解析成指定类型JavaBean 
 举例:User user = JSON.parseObject(request.getInputStream(), User.class);
 

Fastjso工具的应用

导包

  
        
            com.alibaba
            fastjson
            1.2.47
        

实体类

package com.itheima.sh.a_maven_01;

public class User {
    private String username;
    private String password;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public User() {
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + ''' +
                ", password='" + password + ''' +
                '}';
    }
}

示例1:请求参数是普通字符串和响应数据是JSON字符串

前端代码:




    
    Title


 

后端代码:

package com.itheima.sh.a_maven_01;

import com.alibaba.fastjson.JSON;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;

@WebServlet("/Union01Servlet")
public class Union01Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 接收请求
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        System.out.println(username + "," + password);
        //2. 业务处理 (数据库: 伪数据)
        User user = new User(username,password);

        //3. 响应数据
        //public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
        String jsonString = JSON.toJSONString(user);
        System.out.println("jsonString = " + jsonString);
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().print(jsonString);
    }
}

示例2:请求参数为json格式数据

前端代码:




    
    Title



 

后端代码:

package com.itheima.sh.a_maven_01;

import com.alibaba.fastjson.JSON;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;

@WebServlet("/Union02Servlet")
public class Union01Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 接收请求
        request.setCharacterEncoding("utf-8");
       
       //接收请求数据
        User user = JSON.parseObject(request.getInputStream(), User.class);
        //3. 响应数据
        //public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
        String jsonString = JSON.toJSONString(user);
        System.out.println("jsonString = " + jsonString);
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().print(jsonString);
    }
}

小结

  • 把对象转换为json格式

    String  JSON.toJSONString(对象);
    
  • 把json对象数据,转换为实体类对象

    实体类对象 = JSON.parseObject( InputSteam is ,  实体类.class );
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/856527.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号