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;所以你无…

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

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

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

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 将叶子节点和复合节点组合起来&#xff0c;定义一个抽象接口遍历他们 1.1 角色 Component&#xff08;抽象构件&#xff09;&#xff1a;为叶子构件和复合构件声明接口&#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;继续教育学院领导及继续教育信息化、教学教务管理、课程…

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

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

范式 事务 多表查询

范式 概念&#xff1a;设计数据库时&#xff0c;需要遵循的一些规范。要遵循后边的范式要求&#xff0c;必须遵循前边的所有范式要求 第一范式&#xff1a; 数据库表的每一列都是不可分割的基本数据项 这样子就不满足第一范式 这样子就满足第一范式 存在问题&#xff1a; 数…

无涯教程-PHP - 返回类型声明

在PHP 7中&#xff0c;引入了一个新函数返回类型声明&#xff0c;返回类型声明指定函数应返回的值的类型&#xff0c;可以声明返回类型的以下类型。 intfloatbooleanstringinterfacesarraycallable 有效返回类型 <?phpdeclare(strict_types1);function returnIntValue(i…

Unity打包Windows程序,概率性出现无法全屏或分辨率不匹配

排除代码和Resolution and Presentation面板设置问题 如果程序还是不能按照预期的分辨率运行&#xff0c;应该是系统注册表记录了对应的设置。 解决方案&#xff1a; 打开注册表&#xff0c;使用快捷键“Win” "R"组合快捷键。在打开后面键入命令&#xff1a;Rege…

一键快速还原修复人脸,CodeFormer 助力人脸图像修复

今天在查资料的时候无意间看到了一个很有意思的工具&#xff0c;就是CodeFormer &#xff0c;作者给出来的说明是用于人脸修复任务的&#xff0c;觉得很有意思就拿来实践了一下&#xff0c;这里记录分享一下。 首先对人脸修复任务进行简单的回顾总结&#xff1a; 人脸修复是指…

分发饼干【贪心算法】

分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有一个…

MATLAB中符号变量的使用方法解析

简介 MATLAB中常常使用符号变量&#xff0c;这里定义符号变量的函数是syms 使用方法如下 syms x y z 其中&#xff0c;x、y、z 是符号变量&#xff0c;可以是任意字母、数字或下划线组合而成的字符串。 举例1&#xff1a; 代码 以下是一个简单的例子&#xff0c;演示如何…

[论文阅读笔记25]A Comprehensive Survey on Graph Neural Networks

这是一篇GNN的综述, 发表于2021年的TNNLS. 这篇博客旨在对GNN的基本概念做一些记录. 论文地址: 论文 1. 引言, 背景与定义 对于图像数据来说, CNN具有平移不变性和局部连接性, 因此可以在欧氏空间上良好地学习. 然而, 对于具有图结构的数据(例如社交网络 化学分子等)就需要用…

Qt5升级到Qt6分步迁移教程

Qt框架的一个新的长期支持版本6.5最近发布。它为以前的版本引入了许多修复、改进和新功能。有些可能对您的应用程序有用&#xff08;如果不是现在&#xff0c;可能会在将来&#xff09;&#xff0c;因此最好将应用程序迁移到最新版本的框架。 仍然有许多应用程序仍在使用Qt 5&…