java中json和对象之间相互转换的运用

1.目录结构

在这里插入图片描述

2.配置相关文件

2.1.引入相关的pom文件

pom.xml

<dependencies><!-- JSON --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.3</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.12.3</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.12.3</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.8</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.24</version></dependency></dependencies>

2.2.配置引入json文件工具类

PurUtil.java

package util;import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;public class PurUtil {/*** 读取json文件方法* @param url* @return*/public static  String readWithFileInputStream(String url){// 创建一个 File 对象,表示要读取的文件File file = new File(url);// 创建一个 StringBuilder 对象,用来存储读取到的字符串StringBuilder sb = new StringBuilder();try {// 创建一个 FileReader 对象,用来读取文件的字符流FileReader fr = new FileReader(file);// 创建一个 BufferedReader 对象,用来缓冲字符流,并提供按行读取的方法BufferedReader br = new BufferedReader(fr);// 定义一个变量,用来存储每行的内容String line;// 循环读取每一行,直到文件结束while ((line = br.readLine()) != null) {// 将每行的内容追加到 StringBuilder 中,并添加换行符sb.append(line).append("\n");}// 关闭 BufferedReader 和 FileReaderbr.close();fr.close();} catch (IOException e) {// 处理异常e.printStackTrace();}// 将 StringBuilder 转换为字符串,并打印输出String json = sb.toString();return json;}
}

2. 3.配置JSON和对象相互转化工具类

JsonUtil.java

package util;import com.alibaba.fastjson.JSON;public class JsonUtil {public static String getJson(Object object){return JSON.toJSONString(object);}public static <T> T fromJson(String json, Class<T> clazz) {return JSON.parseObject(json,clazz);}}

2.4.配置java对象

Columns.java

package entity;import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;public class Columns {@JsonProperty("Name")private String name;@JsonProperty("Caption")private String caption;@JsonProperty("DataType")private String dataType;public Columns() {}public Columns(String name, String caption, String dataType) {this.name = name;this.caption = caption;this.dataType = dataType;}@JSONField(name = "Name")public String getName() {return name;}@JSONField(name = "Name")public void setName(String name) {this.name = name;}@JSONField(name = "Caption")public String getCaption() {return caption;}@JSONField(name = "Caption")public void setCaption(String caption) {this.caption = caption;}@JSONField(name = "DataType")public String getDataType() {return dataType;}@JSONField(name = "DataType")public void setDataType(String dataType) {this.dataType = dataType;}
}

IXbusPlanInfoBuild.java

package entity;import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.List;public class IXbusPlanInfoBuild{@JsonProperty("MessageHeader")private MessageHeader messageHeader;@JsonProperty("Tables")private List<Table> listTab;public IXbusPlanInfoBuild(){this.messageHeader=new MessageHeader();this.listTab=new ArrayList<Table>();Table table=new Table();this.listTab.add(table);}@JSONField(name = "MessageHeader")public MessageHeader getMessageHeader() {return messageHeader;}public void setMessageHeader(MessageHeader messageHeader) {this.messageHeader = messageHeader;}@JSONField(name = "Tables")public List<Table> getListTab() {return listTab;}@JSONField(name = "Tables")public void setListTab(List<Table> listTab) {this.listTab = listTab;}}

MessageHeader.java

package entity;import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;public class MessageHeader {@JsonProperty("UUID")private String uuid;@JsonProperty("SvcName")private String svcName;@JsonProperty("Sender")private String sender;@JsonProperty("Receiver")private String receiver;@JsonProperty("MessageId")private String messageId;@JsonProperty("Msg")private String msg;@JsonProperty("Flag")private Integer flag;@JsonProperty("MessageTypeId")private String messageTypeId;@JsonProperty("SendDate")private String sendDate;@JsonProperty("SendTime")private String sendTime;@JSONField(name = "UUID")public String getUuid() {return uuid;}public void setUuid(String uuid) {this.uuid = uuid;}@JSONField(name = "SvcName")public String getSvcName() {return svcName;}public void setSvcName(String svcName) {this.svcName = svcName;}@JSONField(name = "Sender")public String getSender() {return sender;}public void setSender(String sender) {this.sender = sender;}@JSONField(name = "Receiver")public String getReceiver() {return receiver;}public void setReceiver(String receiver) {this.receiver = receiver;}@JSONField(name = "MessageId")public String getMessageId() {return messageId;}public void setMessageId(String messageId) {this.messageId = messageId;}@JSONField(name = "Msg")public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}@JSONField(name = "Flag")public Integer getFlag() {return flag;}public void setFlag(Integer flag) {this.flag = flag;}@JSONField(name = "MessageTypeId")public String getMessageTypeId() {return messageTypeId;}public void setMessageTypeId(String messageTypeId) {this.messageTypeId = messageTypeId;}@JSONField(name = "SendDate")public String getSendDate() {return sendDate;}public void setSendDate(String sendDate) {this.sendDate = sendDate;}@JSONField(name = "SendTime")public String getSendTime() {return sendTime;}public void setSendTime(String sendTime) {this.sendTime = sendTime;}
}

Rows.java

package entity;import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;public class Rows {@JsonProperty("MESSAGE")private String message;@JsonProperty("ACCOUNT_PERIOD")private String accountPeriod;@JsonProperty("MSG_TYPE")private String msgType;@JsonProperty("MR_LINE_ID")private String mrLineId;@JsonProperty("RETURN_TIME")private String returnTime;@JsonProperty("SYSTEM_ID")private String systemId;@JSONField(name = "MESSAGE")public String getMessage() {return message;}@JSONField(name = "MESSAGE")public void setMessage(String message) {this.message = message;}@JSONField(name = "ACCOUNT_PERIOD")public String getAccountPeriod() {return accountPeriod;}@JSONField(name = "ACCOUNT_PERIOD")public void setAccountPeriod(String accountPeriod) {this.accountPeriod = accountPeriod;}@JSONField(name = "MSG_TYPE")public String getMsgType() {return msgType;}@JSONField(name = "MSG_TYPE")public void setMsgType(String msgType) {this.msgType = msgType;}@JSONField(name = "MR_LINE_ID")public String getMrLineId() {return mrLineId;}@JSONField(name = "MR_LINE_ID")public void setMrLineId(String mrLineId) {this.mrLineId = mrLineId;}@JSONField(name = "RETURN_TIME")public String getReturnTime() {return returnTime;}@JSONField(name = "RETURN_TIME")public void setReturnTime(String returnTime) {this.returnTime = returnTime;}@JSONField(name = "SYSTEM_ID")public String getSystemId() {return systemId;}@JSONField(name = "SYSTEM_ID")public void setSystemId(String systemId) {this.systemId = systemId;}}

Table.java

package entity;import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.List;public class Table {@JsonProperty("Name")private String name;@JsonProperty("Columns")private List<Columns> listCol;@JsonProperty("Rows")private List<Rows> listRows;public Table(){this.listCol=new ArrayList<Columns>();this.listRows=new ArrayList<Rows>();}@JSONField(name = "Name")public String getName() {return name;}@JSONField(name = "Name")public void setName(String name) {this.name = name;}@JSONField(name = "Columns")public List<Columns> getListCol() {return listCol;}@JSONField(name = "Columns")public void setListCol(List<Columns> listCol) {this.listCol = listCol;}@JSONField(name = "Rows")public List<Rows> getListRows() {return listRows;}@JSONField(name = "Rows")public void setListRows(List<Rows> listRows) {this.listRows = listRows;}
}

说明: @JSONField在get方法进行设置,那么对象在转化为json格式的时候,将会按照JSONField设置的值进行转化;@JSONField在set方法设置,那么json格式字符串才会匹配注解上面一样的对象属性,然后对对象属性进行赋值。

2.5.配置测试工具类

2.5.1对象转化为json字符串

TestPut.java

package test;import entity.*;
import util.JsonUtil;
import util.PurUtil;import java.util.ArrayList;
import java.util.List;public class TestPut {public static void main(String[] args) {String str2=JsonUtil.getJson(TestPut.getIXbusPlanInfoBuild());int a=1;}public static IXbusPlanInfoBuild getIXbusPlanInfoBuild(){IXbusPlanInfoBuild iXbusPlanInfoBuild=new IXbusPlanInfoBuild();MessageHeader messageHeader=new MessageHeader();messageHeader.setUuid("8ac4c0b689297e31018943de73433307");messageHeader.setSvcName("1012114110");messageHeader.setSender("1012");messageHeader.setReceiver("1141");messageHeader.setMessageId("");messageHeader.setMsg("");messageHeader.setFlag(0);messageHeader.setMessageTypeId("1012114110");messageHeader.setSendDate("20230711");messageHeader.setSendTime("153319");//tableList<Table> listTab=new ArrayList<Table>();Table table=new Table();table.setName("BODY");List<Columns> listCol=new ArrayList<Columns>();Columns columns1=new Columns();columns1.setName("MR_LINE_ID");columns1.setCaption("计划行号");columns1.setDataType("S");listCol.add(columns1);Columns columns2=new Columns();columns2.setName("ACCOUNT_PERIOD");columns2.setCaption("会计期");columns2.setDataType("S");listCol.add(columns2);Columns columns3=new Columns();columns3.setName("RETURN_TIME");columns3.setCaption("反馈时间");columns3.setDataType("S");listCol.add(columns3);Columns columns4=new Columns();columns4.setName("MSG_TYPE");columns4.setCaption("消息类型(S:成功 ;E:失败)");columns4.setDataType("S");listCol.add(columns4);Columns columns5=new Columns();columns5.setName("MESSAGE");columns5.setCaption("消息内容");columns5.setDataType("S");listCol.add(columns5);Columns columns6=new Columns();columns6.setName("SYSTEM_ID");columns6.setCaption("系统别");columns6.setDataType("S");listCol.add(columns6);table.setListCol(listCol);List<Rows> listRow=new ArrayList<Rows>();Rows rows=new Rows();rows.setMessage("消息接收成功");rows.setAccountPeriod("202307");rows.setMsgType("S");rows.setMrLineId("BJJHGG01230700032-001");rows.setReturnTime("20230711153319");rows.setSystemId("1012");listRow.add(rows);table.setListRows(listRow);listTab.add(table);iXbusPlanInfoBuild.setMessageHeader(messageHeader);iXbusPlanInfoBuild.setListTab(listTab);return iXbusPlanInfoBuild;}
}

在这里插入图片描述

2.5.2字符串转化为对象

TestPut.java

package test;import entity.*;
import util.JsonUtil;
import util.PurUtil;import java.util.ArrayList;
import java.util.List;public class TestPut {public static void main(String[] args) {String str= PurUtil.readWithFileInputStream("E:/java project/studyEntity1/src/main/resources/plan.json");IXbusPlanInfoBuild iXbusPlanInfoBuild=JsonUtil.fromJson(str,IXbusPlanInfoBuild.class);int a=1;}public static IXbusPlanInfoBuild getIXbusPlanInfoBuild(){IXbusPlanInfoBuild iXbusPlanInfoBuild=new IXbusPlanInfoBuild();MessageHeader messageHeader=new MessageHeader();messageHeader.setUuid("8ac4c0b689297e31018943de73433307");messageHeader.setSvcName("1012114110");messageHeader.setSender("1012");messageHeader.setReceiver("1141");messageHeader.setMessageId("");messageHeader.setMsg("");messageHeader.setFlag(0);messageHeader.setMessageTypeId("1012114110");messageHeader.setSendDate("20230711");messageHeader.setSendTime("153319");//tableList<Table> listTab=new ArrayList<Table>();Table table=new Table();table.setName("BODY");List<Columns> listCol=new ArrayList<Columns>();Columns columns1=new Columns();columns1.setName("MR_LINE_ID");columns1.setCaption("计划行号");columns1.setDataType("S");listCol.add(columns1);Columns columns2=new Columns();columns2.setName("ACCOUNT_PERIOD");columns2.setCaption("会计期");columns2.setDataType("S");listCol.add(columns2);Columns columns3=new Columns();columns3.setName("RETURN_TIME");columns3.setCaption("反馈时间");columns3.setDataType("S");listCol.add(columns3);Columns columns4=new Columns();columns4.setName("MSG_TYPE");columns4.setCaption("消息类型(S:成功 ;E:失败)");columns4.setDataType("S");listCol.add(columns4);Columns columns5=new Columns();columns5.setName("MESSAGE");columns5.setCaption("消息内容");columns5.setDataType("S");listCol.add(columns5);Columns columns6=new Columns();columns6.setName("SYSTEM_ID");columns6.setCaption("系统别");columns6.setDataType("S");listCol.add(columns6);table.setListCol(listCol);List<Rows> listRow=new ArrayList<Rows>();Rows rows=new Rows();rows.setMessage("消息接收成功");rows.setAccountPeriod("202307");rows.setMsgType("S");rows.setMrLineId("BJJHGG01230700032-001");rows.setReturnTime("20230711153319");rows.setSystemId("1012");listRow.add(rows);table.setListRows(listRow);listTab.add(table);iXbusPlanInfoBuild.setMessageHeader(messageHeader);iXbusPlanInfoBuild.setListTab(listTab);return iXbusPlanInfoBuild;}
}

在这里插入图片描述

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

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

相关文章

MySQL基本查询

目录 create 替换 Retrieve select 全列查询 限制查询长度 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 where条件​编辑 结果排序 筛选分页结果 Update Delete 删除整张表 截断表 插入查询结果 聚合函数 group by子句的使用 create INSERT…

STM32单片机语音识别台灯控制系统人检测亮度调节

实践制作DIY- GC00156-语音识别台灯控制系统 一、功能说明&#xff1a; 基于STM32单片机设计-语音识别台灯控制系统 二、功能说明&#xff1a; 电路&#xff1a;STM32F103C系列最小系统串口语音识别模块LED灯板1个红外传感器 1.任何时候没有人则关闭灯。有人可以自动打开灯。…

【PHP面试题28】Redis中的connect和pconnect如何使用,有什么区别

文章目录 一、背景二、connect函数三、pconnect函数四、区别和使用场景五、总结 一、背景 本文已收录于PHP全栈系列专栏&#xff1a;PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题&#xff0c;对标资深工程师/架构师序列&#xff0c;欢迎大家提前关注锁定。 Redis是一个开…

挖矿记录+解决方案:利用GitLab组件对服务器进行挖矿导致CPU占用200%

文章目录 什么是云服务器挖矿?事件记录事件分析产生影响解决方案后期预防什么是云服务器挖矿? 云服务器挖矿是指利用云服务器从事赚取比特币的活动。比特币是一种虚拟数字货币,挖矿是将一段时间内比特币系统中发生的交易进行确认,并记录在区块链上形成新区块的过程。 用于…

复习opencv:螺丝螺纹缺陷检测

螺牙缺陷检测 简述去噪椒盐噪声高斯噪声 小波变换引导滤波求最大凸包判断曲直全部代码 简述 今天收到了一个检测螺牙缺陷的问题&#xff0c;当复习opencv练个手&#xff0c;记录一下基础知识。这里的代码是检测弯曲的&#xff0c;其他缺陷用yolo处理。东家给的图片有的是有干扰…

能翻译维吾尔语的软件有哪些?这几个可以用用看

能翻译维吾尔语的软件有哪些&#xff1f;在如今全球化的背景下&#xff0c;不同语言之间的沟通交流变得尤为重要。维吾尔语作为中国特有的少数民族语言之一&#xff0c;它的翻译需求日益增长。本文将介绍几款精选的维吾尔语翻译软件&#xff0c;帮助大家顺利实现跨语言沟通。 智…

驱动 day10 作业

要求&#xff1a;platform驱动实现 现象&#xff1a; test.c应用程序 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #in…

Linux系统编程(信号处理 sigacation函数和sigqueue函数 )

文章目录 前言一、sigaction二、sigqueue函数三、代码示例总结 前言 本篇文章我们来介绍一下sigacation函数和sigqueue函数。 一、sigaction sigaction 是一个用于设置和检查信号处理程序的函数。它允许我们指定信号的处理方式&#xff0c;包括指定一个函数作为信号处理程序…

XML文档详解

目录 XML文档 一、XML文件 二、Dom4J解析XML文件 三、Sax解析XML文件 四、使用Dom4j的XPath解析XML文件 4.1XPath语法 4.2 获取sys-config.xml文件的配置信息 4.3 获取server.xml文件的配置信息 4.4 获取bookstore.xml文件的配置信息 XML文档 一、XML文件 1.1 学习重…

MySQL 主从延迟的常见原因及解决方法

主从延迟作为 MySQL 的痛点已经存在很多年了&#xff0c;以至于大家都有一种错觉&#xff1a;有 MySQL 复制的地方就有主从延迟。 对于主从延迟的原因&#xff0c;很多人将之归结为从库的单线程重放。 但实际上&#xff0c;这个说法比较片面&#xff0c;因为很多场景&#xf…

1765_Perl实现fileread功能

全部学习汇总&#xff1a; GreyZhang/perl_basic: some perl basic learning notes. (github.com) fileread是MATLAB中的一个函数&#xff0c;可以实现对一个文本文件的全文读取。读取后的内容返回给一个字符串量。在Python中也有类似的功能&#xff0c;不过MATLAB中的这个更能…

python简单使用【mac-ide:pycharm】

小白实用快捷键记录 一、Mac下安装并配置python3开发环境二、python学习三、pycharm常用快捷键记录 一、Mac下安装并配置python3开发环境 点我查看python及pycharm下载安装、环境配置 二、python学习 不是很推荐&#xff0c;想系统学习的同学可以做个参考&#xff1a; Pytho…