JavaWeb 速通JSON

目录

一、JSON快速入门

        1.基本介绍 : 

        2.定义格式 : 

        3.入门案例 : 

二、JSON对象和字符串的相互转换

        1.常用方法 : 

        2.应用实例 : 

        3.使用细节 : 

三、JSON在Java中的使用

        1.基本说明 : 

        2.应用场景 : 

            2.1 JSON <---> JavaBean

            2.2 JSON <---> List

            2.3 JSON <---> Map


一、JSON快速入门

        1.基本介绍 : 

        (1) JSON全称"JavaScript Object Notation",即JavaScript对象表示法。

        (2) JSON是轻量级的文本数据交换格式,使用广泛;

        (3) JSON独立于语言,即Java, PHP, asp.net等都可以使用JSON。

        2.定义格式 : 

        JSON的定义格式与JS中通过{}定义对象的格式类似,注意JSON中的key要加双引号"",value可以是string, number, object, array, true, false, null类型。具体如下——

        var 变量名 = {

                "key1" : value,

                "key2" : value,

                "key3" : [],                    //JSON数组

                "key4" : {},                   //JSON可以在对象中嵌套定义对象

                "key5" : [{}, {}, {}]        //JSON对象数组(不限制类型[])

        }

        3.入门案例 : 

                intro.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Json introduction</title>
</head><script type="text/javascript">window.onload = function () {//定义一个JSON对象var student = {"name" : "Cyan","age" : 21,"gender" : "male","hobby" : ["basketball", "writing", "chess"],"goals" : [{"kyrie" : "irving"}, {"Cyan" : "RA9"}, 141, 450]}//取出JSON对象中的值(加号+ 仅取出值)console.log("name = ", student.name);console.log("name = " + student.name);console.log("hobby = ", student.hobby);for (var i = 0; i < student.hobby.length; ++i) {console.log("The no.%i hobby = ", (i + 1), student.hobby[i]);}console.log("goals = " + student.goals)console.log("goals = ", student.goals)console.log("score of goals = ", student.goals[3])console.log("Cyan of obj of goals = ", student.goals[1].Cyan)}</script>
<body bgcolor="#e0ffff"><h2 style="color: pink">请查看控制台打印出的信息捏~</h2>
</body>
</html>

                运行效果 : 


二、JSON对象和字符串的相互转换

        1.常用方法 : 

        (1) JSON.stringify(json)——将一个JSON对象转换为一个json字符串。

        (2) JSON.parse(jsonString)——将一个json字符串转换成一个JSON对象。

        PS : JSON是一个JS内置对象(built-in)。如下图所示 : 

        2.应用实例 : 

                string_json.html代码如下 : 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>string_json</title><script type="text/javascript">//加载页面window.onload = function() {console.log("=================== JSON --> String ===================")//定义一个JSON对象var jsonCyan = {"name" : "Cyan","token" : "RA9"}console.log("jsonCyan = ", jsonCyan);console.log("jsonCyan's type = ", typeof(jsonCyan));//将JSON对象转换为String类型var strCyan = JSON.stringify(jsonCyan);console.log("strCyan = ", strCyan)console.log("strCyan's type = ", typeof(strCyan));console.log("\n=================== String --> JSON ===================")var strFive = "{\"name\":\"Five\",\"token\":\"5\"}";var jsonFive = JSON.parse(strFive);console.log("strFive = ", strFive)console.log("jsonFive = ", jsonFive)}</script>
</head>
<body>
</body>
</html>

                运行结果 : 

        3.使用细节 : 

        (1) JSON.stringify(json)方法不会影响原来的json对象;JSON.parse(string)方法也不会影响原来的string。

        (2) 定义JSON对象时,属性既可以使用双引号"",也可以使用单引号'';但是当通过parse方法将原生字符串转成JSON对象时,要求属性必须使用双引号"",否则会一直报错。

        (3) JSON.stringify(json)方法得到的字符串,默认就是双引号""表示的字符串,在语法格式正确的情况下,可以直接重新转换成JSON对象。


三、JSON在Java中的使用

        1.基本说明 : 

        Java中使用JSON,需要引入第三方jar包——gson.jar。该jar包是由Google公司提供的用于在Java对象和JSON数据之间进行映射的Java类库。gson.jar可以对JSON字符串和Java对象进行相互转换。

        导入gson.jar如下 : 

        2.应用场景 : 

            2.1 JSON <---> JavaBean

                定义一个JavaBean学生类,Student类代码如下 : 

package javabean;/*** @author : Cyan_RA9* @version : 21.0*/
public class Student {private String name;private double scores;public Student() {}public Student(String name, double scores) {this.name = name;this.scores = scores;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScores() {return scores;}public void setScores(double scores) {this.scores = scores;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", scores=" + scores +'}';}
}

                JavaJSON类代码如下 : 

package javaObject;import com.google.gson.Gson;
import javabean.Student;public class JavaJSON {public static void main(String[] args) {//首先创建一个Gson对象Gson gson = new Gson();Student cyan = new Student("Cyan", 450.0);//利用Gson对象的toJson方法,将JavaBean --> JSON字符串String strCyan = gson.toJson(cyan);System.out.println("strCyan = " + strCyan);//利用Gson对象的fromJson方法,将JSON字符串 --> JavaBean对象//需要传入一个符合JSON格式的字符串,以及JavaBean类的Class对象//底层用到了反射机制Student student = gson.fromJson(strCyan, Student.class);System.out.println("student = " + student);}
}

                运行结果 : 

            2.2 JSON <---> List

                JavaJSON2类代码如下 : 

package javaObject;import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import javabean.Student;import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;public class JavaJSON2 {public static void main(String[] args) {Gson gson = new Gson();List<Student> studentList = new ArrayList<>();studentList.add(new Student("Cyan", 450));studentList.add(new Student("Five", 456));//List --> Json字符串String strList = gson.toJson(studentList);System.out.println("strList = " + strList);//Json字符串 --> ListType type = new TypeToken<List<Student>>() {}.getType();System.out.println("\ntype = " + type);System.out.println("type's type = " + type.getClass());List<Student> students = gson.fromJson(strList, type);/*(1) 由于TypeToken的无参构造器使用protected访问修饰符修饰,因此无法直接在别包下直接调用该无参构造。(2) 解决之道————借助匿名内部类,匿名内部类有自己隐式的无参构造,而该无参构造中又默认隐含super关键字,借此调用TypeToken的无参构造。(3) TypeToken无参构造器底层用到了反射机制(拿到了类的正名)。*/System.out.println("\nstudents = " + students);}
}

                运行结果 : 

            2.3 JSON <---> Map

                JavaJSON3类代码如下 : 

package javaObject;import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import javabean.Student;import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;/*** @author : Cyan_RA9* @version : 21.0*/
public class JavaJSON3 {public static void main(String[] args) {Gson gson = new Gson();Map<Integer, Student> studentMap = new HashMap<>();studentMap.put(1, new Student("Cyan", 450));studentMap.put(2, new Student("Rain", 445));//Map --> JSON字符串String strMap = gson.toJson(studentMap);System.out.println("strMap = " + strMap);//JSON字符串 --> MapType type = new TypeToken<Map<Integer, Student>>() {}.getType();Map<Integer, Student> students = gson.fromJson(strMap, type);System.out.println("students = " + students);}
}

                运行结果 : 

        System.out.println("END-------------------------------------------------------------");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/58293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM 内存大对象监控和优化实践

作者&#xff1a;vivo 互联网服务器团队 - Liu Zhen、Ye Wenhao 服务器内存问题是影响应用程序性能和稳定性的重要因素之一&#xff0c;需要及时排查和优化。本文介绍了某核心服务内存问题排查与解决过程。首先在JVM与大对象优化上进行了有效的实践&#xff0c;其次在故障转移与…

Gorilla LLM:连接海量 API 的大型语言模型

如果你对这篇文章感兴趣&#xff0c;而且你想要了解更多关于AI领域的实战技巧&#xff0c;可以关注「技术狂潮AI」公众号。在这里&#xff0c;你可以看到最新最热的AIGC领域的干货文章和案例实战教程。 一、前言 在当今这个数字化时代&#xff0c;大型语言模型&#xff08;LLM…

【C++】list类的模拟实现

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;C的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、list类的模拟实现1.1 list的…

2023-08-28 LeetCode每日一题(插入区间)

2023-08-28每日一题 一、题目编号 57. 插入区间二、题目链接 点击跳转到题目位置 三、题目描述 给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表。 在列表中插入一个新的区间&#xff0c;你需要确保列表中的区间仍然有序且不重叠&#xff08;如果有必要的…

nacos服务器启动报错集合

报错1 Error creating bean with name ‘user‘: Unsatisfied dependency expressed through field ‘jwtTokenManage 开启鉴权之后&#xff0c;你可以自定义用于生成JWT令牌的密钥&#xff0c;application.properties中的配置信息为&#xff1a; ### Since 1.4.1, worked when…

Django(3)-创建第一个数据模型-ORM映射

数据库配置 根目录下settings.py 。这是个包含了 Django 项目设置的 Python 模块。 通常&#xff0c;这个配置文件使用 SQLite 作为默认数据库。如果你不熟悉数据库&#xff0c;或者只是想尝试下 Django&#xff0c;这是最简单的选择。Python 内置 SQLite&#xff0c;所以你无…

【Docker】Dockerfile介绍

Dockerfile是一个文本文件&#xff0c;其中包含了一系列的指令&#xff0c;用于构建Docker镜像。这些指令可以用来自动化镜像的构建过程&#xff0c;并创建自定义镜像。 以下是一些常用的Dockerfile指令及其功能&#xff1a; FROM&#xff1a;指定基础镜像。这是Dockerfile中…

【科研论文配图绘制】task6直方图绘制

【科研论文配图绘制】task6直方图绘制 task6 主要掌握直方图的绘制技巧&#xff0c;了解直方图含义&#xff0c;清楚统计指标的添加方式 1.直方图 直方图是一种用于表示数据分布和离散情况的统计图形&#xff0c;它的外观和柱形图相近&#xff0c;但它所 表达的含义和柱形图…

Flink流批一体计算(17):PyFlink DataStream API之StreamExecutionEnvironment

目录 StreamExecutionEnvironment Watermark watermark策略简介 使用 Watermark 策略 内置水印生成器 处理空闲数据源 算子处理 Watermark 的方式 创建DataStream的方式 通过list对象创建 ​​​​​​使用DataStream connectors创建 使用Table & SQL connectors…

Autofac在WebApi,Winform中应用

安装注意事项 使用AOP的时候需要安装Autofac.Extras.DynamicProxy,如果发现VS老是提示报错,需要把VS重启下才可以识别。 WebApi 注意事项:WebApi中多一个ApiController中构造注入功能。 注入和AOP拦截 var siteNameList ClassHelper.GetConstants(typeof(SiteName));//创建…

[MySQL] MySQL基础操作汇总

文章目录 前言1.数据库概述1.1 数据库相关概念1.2登录MySQL&#xff1a;1.3 MySQL常用命令1.4表&#xff1a;1.5SQL语句分类&#xff1a; 2.CRUD操作2.1 DQL1.基础查询基础查询&#xff08;简单查询&#xff09;条件查询&#xff1a;排序查询&#xff1a;分组查询&#xff1a;分…

《golang设计模式》第二部分·结构型模式-03-组合模式(Composite)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 将叶子节点和复合节点组合起来&#xff0c;定义一个抽象接口遍历他们 1.1 角色 Component&#xff08;抽象构件&#xff09;&#xff1a;为叶子构件和复合构件声明接口&#xff0c;定义了结构…

Python面试题100例【26~30题】

二十六、请介绍下Django框架的生命周期 Django是一个高级的Python Web框架&#xff0c;它遵循MVC设计模式&#xff08;在Django中通常称为MTV&#xff0c;即模型&#xff08;Model&#xff09;、模板(Template)和视图(Views)&#xff09;&#xff0c;并且鼓励快速开发和干净、…

使用element-plus组件,默认显示英文 转换为中文

最近在边写项目边学习vue3 所以这几天没有更新 找机会把vue3的知识也统计一下吧 先说今天遇到的问题 最近做项目的时候使用element-plus分页组件时发现&#xff0c;显示的不是中文的了&#xff0c;是英文的 解决方法 在app.vue里面配置 <template><el-config-provi…

ROS2 CLI工具

目录 节点topic参数launch录包 节点 查看所有node&#xff1a;ros2 node list查看某个node的信息&#xff1a;ros2 node info node_name topic 查看topic输出&#xff1a; ros2 topic echo <topic_name> 查看topic频率&#xff1a;ros2 topic hz <topic_name> …

美创科技“签”手柠檬文才学堂,共推高校数据安全建设

近日&#xff0c;由柠檬文才学堂联合中国教育在线、东北财经大学网络教育学院共同主办的“三教统筹下高校继续教育数字化转型研讨”顺利召开。 国内高等院校&#xff08;高职院校&#xff09;继续教育分管领导&#xff0c;继续教育学院领导及继续教育信息化、教学教务管理、课程…

今天的小结

1、冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它重复地遍历待排序的元素列表&#xff0c;比较相邻的元素并交换它们的位置&#xff0c;直到整个列表排序完成。冒泡排序的基本思想是通过不断交换相邻元素&#xff0c;将最大&#…

Qt——QLabel控件常见的属性、方法和信号

QLabel 控件常见的属性、方法和信号 一、QLabel 控件常见属性 二、QLabel 控件常见方法 三、QLabel 控件常见信号 方法&#xff1a; setxxx设置属性、去掉set就是获取属性 所有控件中的属性和方法都是通用的 QLabel 控件 描述&#xff1a;QLabel 是一个用于显示文本或图像…

C++之ifstream成员函数get、tellg、eof实例(一百八十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Java使用 Gson 将对象转换为 JSON 字符串

在开发过程中&#xff0c;经常需要将 Java 对象转换为 JSON 字符串&#xff0c;以实现数据的序列化和传输。Gson 是一个流行的 Java 库&#xff0c;它提供了方便的方法来将对象转换为 JSON 字符串。本文将介绍使用 Gson 库的步骤&#xff0c;将一个对象转换为 JSON 字符串&…