JSON知识

server/2024/9/23 1:05:27/

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是以字符串形式表示数据的结构化格式。JSON 使用一组规则来构建对象和数组,这使其成为一种人类可读的文本格式。

在 Java 中,JSON 通常表现为字符串。例如,当你有一个 JSON 对象或数组时,它在代码中会被表示为一个字符串值。可以用双引号括起来的内容表示 JSON 数据,比如:

  • JSON 对象:

    {"name": "John", "age": 30}
    
  • JSON 数组:

    [{"name": "John", "age": 30}, {"name": "Jane", "age": 25}]
    

在代码中,这些 JSON 数据将以字符串的形式存在,因此我们可以说 JSON 是一种字符串格式,但它的结构遵循一定的语法规则。

json工具类

package crrc.jsonstudytest3;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;import java.util.List;
import java.util.Map;public class JsonUtil {/*** 将 Java 对象转换为 JSON 字符串** @param object 要转换的 Java 对象* @return JSON 字符串*/public static String objectToJson(Object object) {return JSON.toJSONString(object);}/*** 将 JSON 字符串转换为 Java 对象** @param json  JSON 字符串* @param clazz 目标类型的 Class* @param <T>   目标类型* @return 转换后的 Java 对象*/public static <T> T jsonToObject(String json, Class<T> clazz) {return JSON.parseObject(json, clazz);}/*** 将 JSON 数组字符串转换为 List** @param json  JSON 数组字符串* @param clazz 目标类型的 Class* @param <T>   目标类型* @return List<目标类型>*/public static <T> List<T> jsonToList(String json, Class<T> clazz) {return JSON.parseArray(json, clazz);}/*** 将 JSON 对象字符串转换为 Map** @param json JSON 对象字符串* @return Map<String, Object>*/public static Map<String, Object> jsonToMap(String json) {Map<String,Object> map = JSON.parseObject(json);return map;}
}

自定义Java类

package crrc.jsonstudytest3;
import lombok.Data;/*** 自定义一个person类 用于与json转换*/
@Data
public class Person {private String name;private int age;// 构造函数、getter 和 setterpublic Person(String name, int age) {this.name = name;this.age = age;}public Person(){}/*** 这个注解用于指示下面的方法是对父类方法(在这* 里是 Object 类的 toString() 方法)的重写。* 在 Java 中,Object 类是所有类的根类,toString() 是* 一个公有方法,通常用于返回对象的字符串表示。* @return 对象的字符串表示*/@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + '}';}
}

测试代码

package crrc.jsonstudytest3;import java.util.List;
import java.util.Map;public class JsonExample {public static void main(String[] args) {// Java 对象转换为 JSON 字符串Person person = new Person("John", 30);String jsonString = JsonUtil.objectToJson(person);System.out.println("JSON String: " + jsonString);// JSON 字符串转换为 Java 对象Person personFromJson = JsonUtil.jsonToObject(jsonString, Person.class);//Person.class 表示获取 Person 类的 Class 对象System.out.println("Person Object: " + personFromJson);// JSON 数组字符串转换为 List//JSON 对象://{//  "name": "John",//  "age": 30,//  "isStudent": false//}//JSON 数组://[//  {"name": "John", "age": 30},//  {"name": "Jane", "age": 25}//]String jsonArray = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]";System.out.println(jsonArray);List<Person> personList = JsonUtil.jsonToList(jsonArray, Person.class);System.out.println("Person List: " + personList);for (int i = 0; i < personList.size(); i++) {//先从列表中得到Person对象personList.get(i)//再将person对象转换成json字符串JsonUtil.objectToJson(personList.get(i))//最后将json字符串转换为map JsonUtil.jsonToMap(JsonUtil.objectToJson(personList.get(i)))Map<String, Object> map = JsonUtil.jsonToMap(JsonUtil.objectToJson(personList.get(i)));System.out.println("Map: " + i + map);}// JSON 对象字符串转换为 MapString jsonObject = "{\"name\":\"John\",\"age\":30}";System.out.println(jsonObject);Map<String, Object> map = JsonUtil.jsonToMap(jsonObject);System.out.println("Map: " + map);}
}

运行结果

JSON String: {"age":30,"name":"John"}
Person Object: Person{name='John', age=30}
[{"name":"John","age":30},{"name":"Jane","age":25}]
Person List: [Person{name='John', age=30}, Person{name='Jane', age=25}]
Map: 0{"name":"John","age":30}
Map: 1{"name":"Jane","age":25}
{"name":"John","age":30}
Map: {"name":"John","age":30}


http://www.ppmy.cn/server/120555.html

相关文章

Webpack 基础使用练习:快速利用场景巩固概念

本篇文章着重来强化对webpack概念的了解&#xff0c;同时提供一些特定的场景来告诉大家应该什么时候使用什么配置来解决什么问题&#xff0c;好的&#xff0c;废话不多说&#xff0c;我们开始啦&#xff01; 基础安装 npm install -D webpack webpack-cli初始文件 module.ex…

c语言中define使用方法

在C语言中&#xff0c;#define指令是预处理指令&#xff0c;用于定义宏。其常用格式是&#xff1a; 定义常量&#xff1a; #define 常量名 常量值 例子&#xff1a; #define PI 3.14159 #define MAX_SIZE 100 这里&#xff0c;PI和MAX_SIZE在代码中会被替换为其对应的值。没有…

Rabbitmq消息队列,安装,使用,三种工作模式

产品 消息队列技术介绍 消息队列概述 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境&#xff0c;使用较多的消息队列有…

Redis 哨兵模式的选举算法是什么?

Redis 哨兵模式中的选举算法主要用于在主节点出现故障时,从多个 Sentinel 节点中选出一个领导者(Leader)来执行故障转移操作。 Redis 哨兵的选举算法基于 Raft 算法的简化版本,但不完全等同于标准的 Raft 算法。以下是其主要过程: 一、发现主节点故障 当一个 Sentinel …

机器人的动力学——牛顿欧拉,拉格朗日,凯恩

机器人的动力学推导方法有很多&#xff0c;常用得有牛顿&#xff0c;拉格朗日&#xff0c;凯恩等方法&#xff0c;接下来&#xff0c;简单说说他们之间的使用。注&#xff1a;这里不考虑怎么来的&#xff0c;只说怎么应用。 参考1&#xff1a;4-14动力学分析方法-牛顿—欧拉方…

掌握MySQL性能监控 · performance_schema 使用快速入门

performance_schema 使用快速入门 在数据库性能调优的过程中&#xff0c;performance_schema 是一个非常有用的工具&#xff0c;它可以帮助我们深入分析 MySQL 内部的性能表现。通过合理使用 performance_schema&#xff0c;我们可以发现数据库中的性能瓶颈并做出优化。本文将…

证券api接口,一个开源Python量化交易平台项目需要考虑哪些方面

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…

【HTTP】方法(method)以及 GET 和 POST 的区别

文章目录 方法&#xff08;method&#xff09;登录上传GET 和 POST 有什么区别&#xff08;面试&#xff09;区别不准确的说法 方法&#xff08;method&#xff09; 首行中的第一部分。首行是由方法、URL 和版本号组成 方法描述了这次请求想干什么&#xff0c;最主要的是&…