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;}
}