
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客
💞当前专栏:每天一个知识点
✨特色专栏: MySQL学习
🥭本文内容: 深入理解JSON及其在Java中的应用
🖥️个人小站 :个人博客,欢迎大家访问
📚个人知识库: 知识库,欢迎大家访问
在现代的Web开发中,JSON(JavaScript Object Notation)扮演了极其重要的角色。它是一种轻量级的数据交换格式,由于其易于阅读和编写,同时也易于机器解析和生成,因此广泛应用于网络数据交换和配置文件。
JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法,类似 XML。
JSON 比 XML更小、更快,更易解析。
我们来看一下到底什么是JSON数据:
{
"message": [
{ "name":"Leo" , "address":"江苏省" },
{ "name":"Mary" , "address":"湖北省" },
{ "name":"Jack" , "address":"浙江省" }
]
}
parse() 方法,以及将对象/值转换为 JSON字符串的 stringify() 方法。在了解到什么JSON之后,我们再来讲讲JSON的语法。
前我一直有个困惑,分不清普通字符串,json字符串和json对象的区别。经过一番研究终于给弄明白了。比如在Java中。
JSON字符串是将JSON数据格式化为字符串的形式。这在数据传输时非常有用,因为JSON数据需要被序列化成字符串格式进行网络传输。例如,一个表示用户的JSON对象可能会被转换成这样的字符串:
字符串:这个很好解释,指使用“”双引号包括的字符。
"{\"name\": \"Leo\", \"age\": 20, \"isStudent\": false}"
Json字符串:指的是符合Json格式要求的字符串。
Json对象:指符合Json格式要求的Java对象
{
"name":"Leo" ,
"age":"20",
"isStudetn":false
}
JSON 数组其实就是包含了多个 JSON 对象的一个集合,数组是以 数组括号 [] 括起来的
[{
"area": "浙江杭州
"name": "李师傅",
"age": 25
},
{
"area": "北京海淀
"name": "小李",
"age": 26
}]
JSON 数组并一定是要相同的 JSON 对象的集合,也可以是不同的对象,不过我在开发过程中并没有这么使用过,感觉挺别扭的。因为如果将多个对象放进一个 JSONArray 中的话,下意识认为是相同类型的集合
下面 👇 这种类型也是正确的 JSON 数组格式
[{
"area": "湖北武汉",
"name": "Leo",
"age": 20
}, {
"address": "湖北宜昌",
"email": "Jack@qq.com",
"phone": 198787891
}]
JSONObject是一个在Java中表示JSON对象的类,通常是由像org.json, Gson, Jackson或其他处理JSON的库提供。以org.json库为例,JSONObject是一个封装了JSON数据的键值映射的类。这个类允许你创建新的JSON对象、从字符串解析JSON数据以及像操作普通Java对象一样访问或修改JSON对象中的数据。
简单来说**JSONObject** 是根据 JSON 形式在 Java 中存在的对象映射
JSONObject提供了一系列方法以便与JSON数据进行交互。以下是一些常用方法:
JSONObject,或者通过传递一个JSON字符串来构造一个已填充的JSONObject。put方法可以添加键值对,如果键已经存在,将替换键对应的值。get和opt系列方法来获取键对应的值。get方法在键不存在时会抛出异常,而opt方法在找不到键时会返回一个默认值(例如null)或指定的默认值。toString()方法将JSONObject转换成JSON格式的字符串。has方法可以检查JSONObject是否包含特定的键。下面我们通过使用org.json库中JSONObject类的做一个简单示例
/**
* @author : Leo
* @version 1.0
* @date 2023-11-21 19:38
* @description :
*/
public class JSONObjectDemo{
public static void main(String[] args) {
// 创建一个JSONObject实例
JSONObject jsonObj = new JSONObject();
// 向这个对象添加键值对
jsonObj.put("name", "Alice");
jsonObj.put("age", 30);
jsonObj.put("hasPet", true);
// 输出JSON对象的字符串表示
System.out.println("JSON Object: " + jsonObj);
// 访问JSONObject中的值
int age = jsonObj.getInt("age");
String name = jsonObj.getString("name");
// 输出获取的值
System.out.println("Name: " + name);
System.out.println("Age: " + age);
// 检查是否存在键
boolean hasAge = jsonObj.has("age");
System.out.println("Has age key? " + hasAge);
// 转换JSON对象为JSON字符串
String jsonString = jsonObj.toString();
System.out.println("JSON String: " + jsonString);
}
}
JSONArray 是Java中用于表示JSON数组的类,类似于JSONObject,它是用来处理JSON数据中的数组类型。JSON数组是一个有序的元素集合,每个元素可以是任意类型,如字符串、数字、JSON对象、其他数组等。这个类提供了一系列的方法来创建、解析和操作JSON数组。
JSONArray 中的元素按照它们被添加的顺序排列。JSONObject或JSONArray。JSONObject类似,提供了丰富的方法来操作数组。put 方法来向数组中添加元素。getString(index), getJSONObject(index) 等方法。put 方法来修改数组中的元素。length 方法可以获取数组的长度。JSONArray进行遍历,通常使用for循环结合 get 方法访问每个元素。toString 方法可以将整个数组转换成JSON格式的字符串。import org.json.JSONArray;
import org.json.JSONObject;
public class JSONArrayExample {
public static void main(String[] args) {
// 创建(构造)一个JSONArray实例
JSONArray array = new JSONArray();
// 向数组中添加元素
array.put("apple");
array.put(100);
array.put(new JSONObject().put("key", "value"));
// 获取数组长度
int length = array.length();
// 遍历JSONArray并输出每个元素
for (int i = 0; i < length; i++) {
System.out.println(array.get(i));
}
// 输出整个JSONArray
System.out.println(array.toString());
}
}
在上面的代码中,我们创建了一个JSONArray对象,并向其中添加了不同类型的元素。我们还遍历了数组并打印了每个元素,最后,我们将整个数组转换成了一个字符串。
JSONArray 通常用于处理那些按顺序存放同类或不同类数据项的场景。在Web开发中,当我们从API接收到一个JSON数组,或者需要发送一个JSON数组时,JSONArray成为一个理想的工具。此外,当从JSON文件中读取数据,或者需要生成JSON格式的数据进行本地存储时,也经常会用到JSONArray。
阿里官方给的定义是, fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON字符串,也可以从 JSON字符串反序列化到 JavaBean。
要在Java项目中使用FastJson,首先需要将其库添加到项目的依赖中。如果你使用Maven来管理项目,可以在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>2.0.24version>
dependency>
首先我们需要先准备一个Person对象。
package com.Leo.exer.json;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author : Leo
* @version 1.0
* @date 2023-11-21 19:52
* @description :
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private int age;
}
Person person = new Person("Leo", 20);
// 1.将对象转换为json字符串
String jsonStr = JSON.toJSONString(person);
System.out.println("jsonStr = " + jsonStr);

//2.将json字符串转换为JSONObject对象
JSONObject jsonObject = JSON.parseObject(jsonStr);
System.out.println("jsonObject = " + jsonObject);

Person person2 = JSON.toJavaObject(jsonObject, Person.class);
System.out.println("person2 = " + person2);

这里推荐两个笔者比较常用的两个网站
本书精通AI短视频制作
文本生成视频+图片生成视频+视频生成视频+AI短视频应用
高效视频制作技巧
助你快速成长为行业大咖!

文字可以直接生成视频,图片可以直接生成视频,甚至视频也可以直接生成新的视频?这在过去是无法想象的,但是在AIGC时代,这些都可以实现!本书将带领大家开启AI视频创作之旅,和大家一起积极接触AI、应用AI工具,占得市场先机!
本书内含四篇(13章)内容,从四个方面入手教大家进行AI视频创作。第一篇,文本生成视频篇:介绍AI短视频脚本文案的创作方法、在剪映里用AI文案和文章链接生成视频的方法、在腾讯智影里智能创作文本与视频的方法、在一帧秒创里用文案帮写与智能编辑功能生成与编辑视频的方法等内容;第二篇,图片生成视频篇:介绍使用AI生成所需要的图片素材的方法、在剪映手机版里用图片一键生成视频的方法、在必剪手机版里用图片生成视频的方法、在快影手机版里用图片生成音乐MV的方法等内容;第三篇,视频生成视频篇:介绍使用剪映电脑版一键剪出同款视频的方法、使用 Premiere 中的AI功能快速编辑视频的方法,以及借助AI功能剪辑视频素材的方法等内容;第四篇,AI短视频应用篇:介绍使用ChatGPT生成文案的方法、使用AI视频配音功能制作电影解说类短视频的方法,以及使用AI虚拟数字人制作口播类短视频的方法等内容。除了本书内容,随书附赠80多个教学视频、170个素材与效果文件,以及PPT教学课件、每章案例关键词文件等资源,帮助读者扎实地掌握AI短视频生成与应用技能。
木白
网名:龙飞、构图君,湖南省作家协会会员,畅销书作者。
5家摄影家协会会员:中国摄影家协会会员、湖南省摄影家协会会员、长沙市摄影家协会会员、中国人像摄影家协会会员、湖南省青年摄影家协会会员。
6个剪映版本实践者:剪映课程讲师、剪映热门模板创作师,用过剪映测试版、手机版、iPad版、Win版、Mac版、网页版。
28万摄影粉丝博主,“手机摄影构图大全”公众号创始人,分享了300多种构图方法。
40万+抖音单个作品阅读量短视频创作者,剪映代表作《一镜看长沙•大河西》。
2021年短视频作品入选CCTV-1、CCTV-3播出的国庆晚会《中国梦•祖国颂》。
当当网链接:http://product.dangdang.com/29632771.html
京东的链接:https://item.jd.com/14187176.html
🌟关注我的博客:关注我的博客,所有新鲜的博客文章和活动信息都不会错过。
📲添加博主wx:添加Leocisyam,如果添加不了,请私信博主。
💬参与方式:关注公众号程序员Leo或者文末扫码关注,回复抽奖,即可参与抽奖。
🎁公布结果:2023年11月23日晚,我会亲自抽取2️⃣名幸运读者,并在微信私信通知,请大家注意查收哈。
