json类型转换对象含有泛型

接受数据的对象1

public class Student<T> {/*** 学号*/private String studentNumber;public String getStudentNumber() {return studentNumber;}public void setStudentNumber(String studentNumber) {this.studentNumber = studentNumber;}public String getStudentName() {return studentName;}public void setStudentName(String studentName) {this.studentName = studentName;}public List<T> getBooks() {return books;}public void setBooks(List<T> books) {this.books = books;}@Overridepublic String toString() {return "Student{" +"studentNumber='" + studentNumber + '\'' +", studentName='" + studentName + '\'' +", books=" + books +'}';}public Student(String studentNumber, String studentName, List<T> books) {this.studentNumber = studentNumber;this.studentName = studentName;this.books = books;}/*** 学生姓名*/private String studentName;private List<T> books;
}

对象1里有list 泛型
因为此时接受的是Book类的数据,所以我转换的时候指定了转换类型为Book类型
接受的其他类型的数据,可以转换的时候指定这个类型就可以了

public class Book {private String bookName;private String price;@Overridepublic String toString() {return "Book{" +"bookName='" + bookName + '\'' +", price='" + price + '\'' +", type='" + type + '\'' +'}';}private String type;public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}public String getType() {return type;}public void setType(String type) {this.type = type;}public Book(String bookName, String price, String type) {this.bookName = bookName;this.price = price;this.type = type;}
}

实操代码

  String parse="{\n" +"  \"books\": [\n" +"    {\n" +"      \"bookName\": \"Book 1\",\n" +"      \"price\": \"19.99\",\n" +"      \"type\": \"Fiction\"\n" +"    },\n" +"    {\n" +"      \"bookName\": \"Book 2\",\n" +"      \"price\": \"29.99\",\n" +"      \"type\": \"Non-fiction\"\n" +"    }\n" +"  ],\n" +"  \"studentName\": \"John Doe\",\n" +"  \"studentNumber\": \"123456\"\n" +"}";JSONObject parseObject=JSONObject.parseObject(parse);Student student = JSONObject.parseObject(parse,Student.class);System.out.println(student);List<Book> books = JSONObject.parseArray(parseObject.get("books").toString(), Book.class);student.setBooks(books);System.out.println(student);Student<Book> student1 = JSONObject.parseObject(parse, new TypeReference<Student<Book>>() {});System.out.println(student1);

输出结果

Student{studentNumber='123456', studentName='John Doe', books=[{"price":"19.99","type":"Fiction","bookName":"Book 1"}, {"price":"29.99","type":"Non-fiction","bookName":"Book 2"}]}
Student{studentNumber='123456', studentName='John Doe', books=[Book{bookName='Book 1', price='19.99', type='Fiction'}, Book{bookName='Book 2', price='29.99', type='Non-fiction'}]}
Student{studentNumber='123456', studentName='John Doe', books=[Book{bookName='Book 1', price='19.99', type='Fiction'}, Book{bookName='Book 2', price='29.99', type='Non-fiction'}]}

TypeReference是在运行时指定要转换的类型包括泛型

fastjson的版本

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.76</version>
</dependency>

从而实现指定泛型的类型就可以转换;提高复用性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity中URP下实现深度贴花(雾效支持和BRP适配)

文章目录 前言一、让我们的贴画支持雾效1、我们舍弃内部的MixFog方法2、使用 雾效混合因子 对最后输出颜色进行线性插值相乘 二、在Shader中&#xff0c;限制贴花纹理的采样方式1、申明 纹理 和 限制采样方式的采样器2、在片元着色器进行纹理采样 三、BRP适配1、C#脚本中&#…

贪心算法的“左最优“与“右最优“及其对应的堆处理和预处理方法

1 答疑 1.1 什么是贪心算法的"左最优"与"右最优" "左最优"和"右最优"是贪心算法中的两种策略&#xff1a; 左最优 (Leftmost Greedy): 在每一步选择中&#xff0c;总是选择最左边&#xff08;最早出现的&#xff09;可行的选项。 右…

仿真验证方法(3)——物理验证

目录 一、物理验证的分类 二、DRC 2.1 设计规则 2.2 规则示例 2.3 线宽违例 2.4 间距违例 2.5 交叠违例 三、金属覆盖图形密度检查 四、天线比率检查 4.1 起因 4.2 计算 4.3 改进 五、LVS检查 六、物理验证常用的EDA工具 七、总结 一、物理验证的分类 对于物理验…

专业课145+合肥工业大学833信号分析与处理考研经验合工大电子信息通信

今年专业课145也是考研科目中最满意的一门&#xff0c;其他基本相对平平&#xff0c;所以这里我总结一下自己的专业课合肥工业大学833信号分析与处理的复习经验。 我所用的教材是郑君里的《信号与系统》&#xff08;第三版&#xff09;和高西全、丁玉美的《数字信号处理》&…

java方法的定义和使用

方法 今日目标&#xff1a; 能够知道方法的好处 能够根据两个明确分析方法的参数和返回值 能够编写方法完成授课案例&#xff0c;并在主方法中完成方法的调用 能够知道方法重载及其特点 1&#xff1a;方法的定义和使用 1.1 方法概述 方法(method)&#xff1a;就是完成特…

Java常用的加密技术

项目结构&#xff1a; 总体代码&#xff1a; package VirtualUtils; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.*; import java.security.sp…

深入浅出线程原理

Linux 中的线程本质 线程接口由 Native POSIX Thread Library 提供&#xff0c;即&#xff1a;NPTL 库函数 线程被称为轻量级进程 (Light Weight Process) 每一个线程在内核中都对应一个调度实体&#xff0c;拥有独立的结构体 (task_struct) 内核设计&#xff1a;一个进程对…

【python】matplotlib画图常用功能汇总

目录: 一、matplotlib画图风格二、matplotlib图像尺寸和保存分辨率三、matplotlib子图相关功能创建子图&#xff1a;绘制子图&#xff1a;设置子图属性&#xff1a;调整布局&#xff1a;示例代码&#xff1a; 四、matplotlib字体设置字体族和字体的区别字体选择和设置1. Matplo…

Kubernetes实战(十六)-k8s节点打标签

pod可以根据调度策略让pod调度到想要的节点上运行&#xff0c;或者不在某节点运行。 1 查看现有节点运行环境已有标签 $ kubectl get nodes --show-labels NAME STATUS ROLES AGE VERSION LABELS ops-master-1 Ready control-plane,ma…

亚马逊云科技 WAF 部署小指南(五):在客户端集成 Amazon WAF SDK 抵御 DDoS 攻击...

方案介绍 在 WAF 部署小指南&#xff08;一&#xff09;中&#xff0c;我们了解了 Amazon WAF 的原理&#xff0c;并通过创建 WEB ACL 和托管规则防护常见的攻击。也了解了通过创建自定义规则在 HTTP 请求到达应用之前判断是阻断还是允许该请求。在 Amazon WAF 自定义规则中&am…

代码随想录算法训练营29期Day17|LeetCode 110,257,404

文档讲解&#xff1a;代码随想录 110.平衡二叉树 题目链接&#xff1a;https://leetcode.cn/problems/balanced-binary-tree/description/ 思路&#xff1a; 本题要求我们判断二叉树每个节点 的左右两个子树的高度差的绝对值是否超过 1。我们很容易就能想到利用dfs去做&#…

水果音乐编曲软件 FL Studio v21.2.2.3914 中文免费版(附中文设置教程)

FL studio21中文别名水果编曲软件&#xff0c;是一款全能的音乐制作软件&#xff0c;包括编曲、录音、剪辑和混音等诸多功能&#xff0c;让你的电脑编程一个全能的录音室&#xff0c;它为您提供了一个集成的开发环境&#xff0c;使用起来非常简单有效&#xff0c;您的工作会变得…

【书生·浦语】大模型实战营——第四课作业

教程文档&#xff1a;https://github.com/InternLM/tutorial/blob/main/xtuner/self.md 基础作业需要构建数据集&#xff0c;微调模型&#xff0c;让其明白自己的弟位&#xff08;OvO&#xff01;&#xff09; 微调环境准备 进入开发机后&#xff0c;先bash&#xff0c;再创…

Vue模板的理解和使用

Vue模板 Vue.js 的模板是一种声明性的语法&#xff0c;用于将数据渲染进 DOM&#xff08;文档对象模型&#xff09;。它们使开发者能够以直观的方式声明式地描述用户界面应该如何根据应用程序数据的变化动态显示。 Vue模板的主要特点包括&#xff1a; 数据绑定&#xff1a; …

列表解析与快速排序

排序是在对文本、数值等数据进行操作时常用的功能&#xff0c;本文介绍两种常用的排序方式&#xff0c;借此学习列表解析&#xff0c;并巩固递归算法。 1 选择排序 说到排序&#xff0c;以数值为例&#xff0c;肯定涉及到值大小的对比&#xff0c;选择排序即通过依次在子集中…

蓝桥杯 python 第二题 数列排序

这里给出一种解法 """ # 错的 n int(input()) dp[int(i) for i in input().split(" ")] dp.sort() print(" ".join(str(i) for i in dp)) """#这个是对的 num int(input())l list(map(int, input().split()))l.sort()pr…

AI文本生图模型Stable Diffusion部署教程

本文基于CentOS8进行Stable Diffusion开源框架部署. 1. DNS配置(但是今天出现了偶尔无法下载问题) 为了加速Github访问,我在本机配置如下 (sd) [rootshenjian stable-diffusion-webui]# cat /etc/hosts 127.0.0.1 shenjian localhost localhost.localdomain localhost4 loca…

SpringCloud openFeign 之 获取被调用服务名

SpringCloud openFeign 之 获取被调用服务名 一. 概述 低版本 feign 只能获取到被调用方法的信息。 只有高版本 feign 才支持获取到被调用服务的信息。 二. 代码实现 package com.zxguan.springcloud2.template.user;import com.zxguan.springcloud2.template.user.config…

修改权限控制(chmod命令、chown命令)

1.chmod命令 功能&#xff1a;修改文件、文件夹权限&#xff08;注意&#xff0c;只有文件、文件夹的所属用户或root用户可以修改&#xff09; 语法&#xff1a;chmod [-R] 权限 参数 权限&#xff0c;要设置的权限&#xff0c;比如755&#xff0c;表示&#xff1a;rwxr-xr-x…