当前位置: 首页 > news >正文

JSON

文章目录

  • JSON
    • JSON 的定义格式
    • 快速入门
    • JSON 对象和字符串对象转换
    • JSON 在 java 中使用
      • JSON与java对象的转换
      • JSON与List集合的转换
      • JSON与Map的转换

JSON

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式

JSon 在线文档:https://www.w3school.com.cn/js/js_json_intro.asp

JSON 的定义格式

var 变量名 = { "k1" : value, 		// Number 类型"k2" : "value", 	// 字符串类型"k3" : [],			// 数组类型"k4" : {}, 			// json 对象类型"k5" : [{},{}] 		// json 数组
};

快速入门

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title><script src="jquery-3.7.1.js" type="text/javascript"></script><script type="text/javascript">var myJson = {"key1": "lxg", 	// 字符串"key2": 123, 	// Number "key3": [1, "hello", 2.3], 	// 数组"key4": {"age": 12, "name": "jack"}, 	//json 对象"key5": [ 	//json 数组{"k1": 10, "k2": "milan"}, {"k3": 30, "k4": "smith"}]};//访问 json 的属性console.log("key1= " + myJson.key1);// 访问 json 的数组属性console.log("key3[1]= " + myJson.key3[1]); // hello// 访问 key4 的 name 属性console.log("name= " + myJson.key4.name); // jack// 访问 key5 json 数组的第一个元素console.log("myJson.key5[0]= " + myJson.key5[0]); //[object, object]console.log("myJson.key5[0].k2= " + myJson.key5[0].k2)// milan</script></head><body></body>
</html>

JSON 对象和字符串对象转换

JSON.stringify(json)功能:将一个 json 对象转换成为 json 字符串

JSON.parse( jsonString )功能:将一个 json 字符串转换成为 json 对象

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title><script src="jquery-3.7.1.js" type="text/javascript"></script><script type="text/javascript">var myJson = {"name": "xxx"};console.log(myJson)var s = JSON.stringify(myJson)console.log(s)var myJson1 = JSON.parse(s)console.log(myJson1)</script></head><body></body>
</html>

注意事项:

  • JSON.springify(json 对象) 会返回对应 string,并不会影响原来 json 对象
  • JSON.parse(string) 函数会返回对应的 json 对象,并不会影响原来 string
  • 在定义 Json 对象时, 可以使用 ’ ’ 表示字符串,比如 var json_person = {"name": "jack", "age": 100},也可以写成 var json_person = {'name': 'jack', 'age': 100}
  • 但是在把原生字符串转成 json 对象时,必须使用 “”,否则会报错 比如:var str_dog = “{‘name’:‘小黄狗’, ‘age’: 4}”; 转 json 就会报错
  • JSON.springify(json 对象)返回的字符串, 都是 “” 表示的字符串, 所以在语法格式正确的情况下, 是可以重新转成 json 对象的

JSON 在 java 中使用

java 中使用 json,需要引入到第 3 方的包 gson.jar

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以对 JSON 字符串和 Java 对象相互转换

创建JavaBean:

public class Monster {private Integer id;private String name;private String skill;public Monster(Integer id, String name, String skill) {this.id = id;this.name = name;this.skill = skill;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSkill() {return skill;}public void setSkill(String skill) {this.skill = skill;}
}

JSON与java对象的转换

import com.google.gson.Gson;public class test {public static void main(String[] args) throws Exception {Gson gson = new Gson();Monster monster = new Monster(100, "小火龙", "喷火");// 将java对象转换成json字符串String json = gson.toJson(monster);System.out.println(json);// 将json字符串转换成java对象Monster monster1 = gson.fromJson(json, Monster.class);System.out.println(monster1);}
}

JSON与List集合的转换

public class test03 {public static void main(String[] args) throws Exception {Gson gson = new Gson();ArrayList<Monster> monsters = new ArrayList<>();monsters.add(new Monster(100, "小火龙", "喷火"));monsters.add(new Monster(100, "稻草人", "恐惧"));// 将List集合转换成JSON字符串String json = gson.toJson(monsters);System.out.println(json);// 将JSON字符串转换成List集合Object o = gson.fromJson(json, new TypeToken<List<Monster>>() {}.getType());System.out.println(o);}
}

其中TypeToken<List<Monster>>() {}为匿名内部类,用于保存集合元素的类型(因为程序运行时无法直接得到list中元素的具体类型,需要通过匿名子类间接获取)。

JSON与Map的转换

public static void main(String[] args) throws Exception {Gson gson = new Gson();Map<String, Monster> map = new HashMap<>();map.put("1", new Monster(100, "小火龙", "喷火"));map.put("2", new Monster(100, "稻草人", "恐惧"));// 将Map转换成JSON字符串String json = gson.toJson(map);System.out.println(json);// 将JSON字符串转换成MapObject o = gson.fromJson(json, new TypeToken<Map<String, Monster>>(){}.getType());System.out.println(o);
}
}

相关文章:

JSON

文章目录 JSONJSON 的定义格式快速入门JSON 对象和字符串对象转换JSON 在 java 中使用JSON与java对象的转换JSON与List集合的转换JSON与Map的转换 JSON JSON 指的是 JavaScript 对象表示法&#xff08;JavaScript Object Notation&#xff09; JSON 是轻量级的文本数据交换格式…...

Python | 超前滞后分析

Nino SST Indices (Nino 12, 3, 3.4, 4; ONI and TNI) 有几个指标用于监测热带太平洋&#xff0c;所有这些指标都是基于海表温度(SST)异常在一个给定的区域的平均值。通常&#xff0c;异常是相对于30年的周期来计算的。厄尔尼诺3.4指数(Nio 3.4 index)和海洋厄尔尼诺指数(Ocea…...

Linux CPU利用率

Linux CPU利用率 在线上服务器观察线上服务运行状态的时候&#xff0c;绝大多数人都是喜欢先用 top 命令看看当前系统的整体 cpu 利用率。例如&#xff0c;随手拿来的一台机器&#xff0c;top 命令显示的利用率信息如下 这个输出结果说简单也简单&#xff0c;说复杂也不是那么…...

vue3实现导出pdf、png功能

准备做的系统中出现了 想导出当前页面的png或者pdf设计数据较多后端做可能比较麻烦 就自己研究了一下 1、安装html2canvas 、jspdf包 npm install --save html2canvas // 可以将dom元素转为一张图片 npm install --save jspdf // 导出为PDF格式 2、vue组件中引用&#x…...

what is tty?

waht is tty? 黑话&#xff1a;TTY 为什么使用Linux的时候CtrlC就会终止一个命令运行,ta是如何设置的? stty -a 桌面切换 CTRL ALT F1 – 锁屏 CTRL ALT F2 – 桌面环境 CTRL ALT F3 – TTY3 CTRL ALT F4 – TTY4 CTRL ALT F5 – TTY5 CTRL ALT F6 – TTY6...

在vite中限制node版本

1.修改package.json文件 {"name": "wine-store-frontend","version": "0.0.0","private": true,"type": "module","scripts": {"dev": "vite --open","build"…...

07 Php学习:运算符

PHP 算术运算符 在 PHP 中&#xff0c;算术运算符用于执行基本的数学运算&#xff0c;包括加法、减法、乘法、除法、取余数&#xff0c;负数运算、取反和并置运算。以下是这些运算符的详细解释和示例&#xff1a; 加法运算符 &#xff1a;用于将两个数值相加。 $a 5; $b 3;…...

做了多年前端,有没有想在python,go,nodejs,.net,java,c++中学一门后端,推荐

作为一名经验丰富的前端开发者&#xff0c;选择学习后端技术是一个重要的职业发展决策。Python、Go、Node.js、.NET、Java和C都是强大的后端开发语言&#xff0c;每门语言都有其特定的优势和应用场景。以下是对这些技术的分析&#xff0c;以帮助你做出选择&#xff1a; 目录 …...

JR-SMD201-P便携式网络解码器

详细介绍&#xff1a; JR-SMD201-P便携式网络解码器采用1/2U设计&#xff0c;支持AVS/H.265/H.264/MPEG2解码&#xff0c;支持IP输入&#xff0c;支持1080P/1080I/720P/576I/480I多种分辨率&#xff0c;支持DRA/AC3/EAC3/AAC/MPEG等音频。 产品特点 支持输入方式IP 接口丰富&a…...

线程池阻塞队列的选择

一、背景 想起前两年被问到阻塞队列怎么选&#xff0c;有界是必然的&#xff0c; ArrayBlockingQueue、LinkedBlockingQueue怎么选呢。 二、打开源码看看 ArrayBlockingQueue arrayBlockingQueue new ArrayBlockingQueue(3);LinkedBlockingQueue linkedBlockingQueue new Lin…...

linux内核驱动-在内核代码里添加设备结点

linux中&#xff0c;一切皆文件 我们在用户层用一些系统函数&#xff08;如&#xff1a;fopen等等&#xff09;时&#xff0c;会进入内核&#xff0c;内核会在字符注册了的设备号链表中查找。如果找到就运行我们写的设备文件的&#xff08;驱动&#xff09;函数 我们在前面已经…...

【算法优选】 动态规划之简单多状态dp问题——贰

文章目录 &#x1f38b;前言&#x1f334;[买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/)&#x1f6a9;题目描述&#x1f6a9;算法思路&#xff1a;&#x1f388;状态表示&#xff1a;&#x1f388;…...

【算法刷题 | 二叉树 06】4.10( 路径总和、路径总和 || )

文章目录 13.路径总和13.1问题13.2解法一&#xff1a;递归13.2.1递归思路&#xff08;1&#xff09;确定递归函数参数以及返回值&#xff08;2&#xff09;确定终止条件&#xff08;3&#xff09;确定递归逻辑 13.2.2代码实现 14.路径总和 ||14.1问题14.2解法一&#xff1a;递归…...

代码学习记录37----动态规划

随想录日记part37 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.04.06 主要内容&#xff1a;今天开始要学习动态规划的相关知识了&#xff0c;今天的内容主要涉及四个方面&#xff1a; 完全背包&#xff1b;零钱兑换 II &#xff1b;组合总和 Ⅳ 和单词拆分 …...

Spring Boot:Web开发之三大组件的整合

Spring Boot 前言Spring Boot 整合 ServletSpring Boot 整合 FilterSpring Boot 整合 Listener前言 在 Web 开发中,Servlet 、Filter 和 Listener 是 Java Web 应用中的三大组件。Servlet 是 Java 代码,通过 Java 的 API 动态的向客户端输出内容。Filter 是处于客户端与服务…...

2024.3.15力扣每日一题——卖木头块

2024.3.15 题目来源我的题解方法一 记忆化搜索&#xff08;自顶向下&#xff09;方法二 动态规划&#xff08;自底向上&#xff09; 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2312 我的题解 方法一 记忆化搜索&#xff08;自顶向下&#xff09; 用 f(x,y)表示当木…...

vue快速入门(七)内联语句

注释很详细&#xff0c;直接上代码 上一篇 新增内容 button点击事件绑定内联语句写法与要求 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…...

Docker实战教程 第2章 Docker基础

3-1 Docker介绍 什么是Docker 虚拟化&#xff0c;容器 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&…...

【S32K3 MCAL配置】-3.2-CANFD配置-发送“经典CAN/CANFD标准帧“和“经典CAN/CANFD扩展帧“(基于MCAL+FreeRTOS)

"><--返回「Autosar_MCAL高阶配置」专栏主页--> 目录 实现的架构:基于MCAL层 前期准备工作: 1 评估板S32K312EVB-Q172中CAN外设...

【airtest】自动化入门教程(四)Poco元素定位

目录 一、基础操作 1、通过属性名等方式 2、通过属性组合 3、子节点方式 4、子节点加属性组合方式 5、孙节点offspring 6、兄弟节点sibling 7、父节点parent 8、正则表达式 9、直到某个元素出现 10、直到某个元素消失 二、通过局部坐标定位 1、使用局部坐标系的cli…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...