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

【Java Web】速通JSON

参考笔记:JavaWeb 速通JSON_java webapi调用传json与head-CSDN博客

目录

1.JSON基本介绍

2.JSON串的格式

3.JSON在客户端/浏览器的使用

3.1 JavaScript对象和JSON串的相互转换

3.2 案例演示

4.JSON在服务端的使用

4.1 基本说明

4.2 应用场景

4.2.1 JSON字符串 <-----> JavaBean

4.2.2  Map、List、Array ------> JSON字符串


1.JSON基本介绍

 JSON 全称 JavaScript Object Notation ,即 JavaScript 对象表示法

② JSON 是轻量级的文本数据交换格式,使用广泛

 JSON 独立于语言,即 Java、PHP、asp.net 等都可以使用 JSON

JSON 主要服务于前后端的数据交互,将前端响应到后端的对象数据、后端响应到前端的对象数据用 JSON 格式进行传输,如下所示:

2.JSON串的格式

JSON 串是一个字符串,其定义格式与 JS 中通过 {} 定义对象的方式很类似,但要注意 JSON 中的每个 key 都要加双引号 "key"value 可以是 string、number、object、 array、boolean、null 类型。具体如下:

/* 定义一个JSON串 */
var personStr ='{"name":"张小明","age":20,"girlFriend":{"name":"铁铃","age":23},"foods":["苹果","香蕉","橘子","葡萄"],"pets":[{"petName":"大黄","petType":"dog"},{"petName":"小花","petType":"cat"}]}'

3.JSON在客户端/浏览器的使用

3.1 JavaScript对象和JSON串的相互转换

常用方法

 JSON.stringify(JS对象):将一个 JS 对象转换为一个 JSON 字符串

JSON.parse(jsonString):将一个 JSON 字符串转换成一个 JS 对象

3.2 案例演示

案例1:使用 JSON.stringify(JS对象) 将一个 JS 对象转换为一个 JSON 字符串

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><script type="text/javascript">window.onload = function () {//定义一个JS对象var person = {'name': '张小明','age': 20,'girlFriend': {'name': '铁铃','age': 23},'foods': ['苹果', '香蕉', '橘子', '葡萄'],'pets': [{'petName': '大黄','petType': 'dog'},{'petName': '小花','petType': 'cat'}]}//模拟要将这个JS对象person从前端发往后端//先将JS对象转换为JSON串var personStr = JSON.stringify(person)console.log(typeof personStr)console.log(personStr)//然后将JSON串发送到后端....}</script>
</head><body bgcolor="#e0ffff"><h2 style="color: pink">请查看控制台打印出的信息捏~</h2>
</body></html>

输出结果:

可以看到,JSON 串的类型确实是 string 类型

 案例2:使用 JSON.parse(jsonString) 将一个 JSON 字符串转换成一个 JS 对象

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><script type="text/javascript">window.onload = function () {//定义一个JSON字符串,假设是从后端接收到的var personStr ='{"name":"小马","age":20,"hobby":["swim","sing","rap"]}'//JSON字符串 ----> JS对象var person = JSON.parse(personStr)//访问该对象的属性console.log(person)console.log(person.name)console.log(person.age)console.log(person.hobby)}</script>
</head><body bgcolor="#e0ffff"><h2 style="color: pink">请查看控制台打印出的信息捏~</h2>
</body></html>

输出结果:

4.JSON在服务端的使用

此处以 Java 为例子

 4.1 基本说明

有很多第三方类库提供了 Java 对象和 JSON 串数据相互转换的方法,比如 GsonJacksonFastjson 等等,这里我们使用 Jackson,需要引入的 jar 包如下:

4.2 应用场景

4.2.1 JSON字符串 <-----> JavaBean

import com.fasterxml.jackson.databind.ObjectMapper;
public class demo {public static void main(String[] args) throws Exception {//创建Jackson工具类ObjectMapper objectMapper = new ObjectMapper();/**演示JavaBean ----> JSON字符串的流程*///创建一个Java对象Student student = new Student("小马", 97);//调用writeValueAsString方法,将JavaBean ----> JSON字符串String studentStr = objectMapper.writeValueAsString(student);System.out.println(studentStr);/**演示JSON字符串 ----> JavaBean的流程*///定义一个JSON字符串,假设是从前端接收到的String jsonStr = "{\"name\":\"蔡徐坤\",\"scores\":100.0}";//调用readValue方法,将JSON字符串 -----> JavaBean,底层用到了反射机制Student student1 = objectMapper.readValue(jsonStr, Student.class);System.out.println(student1);}
}//JavaBean实体类
class Student{public String name;public double scores;public Student() {}public Student(String name, double scores) {this.name = name;this.scores = scores;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", scores=" + scores +'}';}
}

运行结果:

4.2.2  Map、List、Array ------> JSON字符串

 这里跟 JavaBean ----> JSON 字符串使用的 API 是完全一样的,还是 writeValueAsString

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class demo {public static void main(String[] args) throws Exception {//创建Jackson工具类ObjectMapper objectMapper = new ObjectMapper();/**演示Map ----> JSON字符串的流程*/Map map = new HashMap<>();map.put("name","小马");map.put("age",23);//调用writeValueAsString方法,将 Map ----> JSON字符串String jsonStr1 = objectMapper.writeValueAsString(map);System.out.println(jsonStr1);/**演示List ----> JSON字符串的流程*/List list = new ArrayList();list.add(new Student("蔡徐坤",23));list.add(new Student("丁真",27));//调用writeValueAsString方法,将 List ----> JSON字符串String jsonStr2 = objectMapper.writeValueAsString(list);System.out.println(jsonStr2);/**演示Array ----> JSON字符串的流程*/int[] arr = {4,5,6};//调用writeValueAsString方法,将 Array ----> JSON字符串String jsonStr3 = objectMapper.writeValueAsString(arr);System.out.println(jsonStr3);}
}//JavaBean实体类
class Student{public String name;public double scores;public Student() {}public Student(String name, double scores) {this.name = name;this.scores = scores;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", scores=" + scores +'}';}
}

输出结果:

相关文章:

  • 【Fifty Project - D26】
  • Python函数返回值的艺术:为何True/False是更优实践及例外情况分析
  • Da14531蓝牙特征值1读没有回调解决
  • DataHub:现代化元数据管理的核心平台与应用实践
  • 数据结构与算法-线性表-单链表(Linked List)
  • 【免费分享】虚拟机VM(适用于 Windows)17.6.3
  • 一文讲透 Vue3 + Three.js 材质属性之皮革篇【扫盲篇】
  • JAVA:多线程使用哈希表
  • Java类加载器深度解析:从原理到实践
  • 通用软件项目全技术栈综合能力评估 - 架构师级挑战
  • 第三章:JavaScript引擎 · 行为之火
  • 黑马程序员c++2024版笔记 第一章
  • vue-quill-editor富文本编辑器
  • 【有理数加法结构体】2022-1-3
  • “禁塑行动·我先行”环保公益项目落地宁夏,共筑绿色生活新篇章
  • HashSet
  • 使用CMake中的configure_file命令自动生成项目版本信息
  • 后端面试题:java中什么是快速失败?
  • 白平衡模块中普朗克曲线拟合硬件实现的猜想
  • 在你窗外闪耀的星星--一维前缀和
  • 普京召开俄乌谈判筹备会议,拉夫罗夫、绍伊古等出席
  • 视频丨中国海警成功救助8名外籍遇险渔民,韩方向中方致谢
  • 人民日报:从“轻微免罚”看涉企执法方式转变
  • 上海团队在医学顶刊连发两文,率先提出“证据污染”循证概念
  • 全国层面首次!《防震减灾基本知识与技能大纲》发布
  • 打击网络谣言、共建清朗家园,中国互联网联合辟谣平台2025年4月辟谣榜