java中json和對(duì)象之間相互轉(zhuǎn)換的運(yùn)用
1.目錄結(jié)構(gòu)

2.配置相關(guān)文件
2.1.引入相關(guān)的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){
// 創(chuàng)建一個(gè) File 對(duì)象,表示要讀取的文件
File file = new File(url);
// 創(chuàng)建一個(gè) StringBuilder 對(duì)象,用來存儲(chǔ)讀取到的字符串
StringBuilder sb = new StringBuilder();
try {
// 創(chuàng)建一個(gè) FileReader 對(duì)象,用來讀取文件的字符流
FileReader fr = new FileReader(file);
// 創(chuàng)建一個(gè) BufferedReader 對(duì)象,用來緩沖字符流,并提供按行讀取的方法
BufferedReader br = new BufferedReader(fr);
// 定義一個(gè)變量,用來存儲(chǔ)每行的內(nèi)容
String line;
// 循環(huán)讀取每一行,直到文件結(jié)束
while ((line = br.readLine()) != null) {
// 將每行的內(nèi)容追加到 StringBuilder 中,并添加換行符
sb.append(line).append("\n");
}
// 關(guān)閉 BufferedReader 和 FileReader
br.close();
fr.close();
} catch (IOException e) {
// 處理異常
e.printStackTrace();
}
// 將 StringBuilder 轉(zhuǎn)換為字符串,并打印輸出
String json = sb.toString();
return json;
}
}2. 3.配置JSON和對(duì)象相互轉(zhuǎn)化工具類
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對(duì)象
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方法進(jìn)行設(shè)置,那么對(duì)象在轉(zhuǎn)化為json格式的時(shí)候,將會(huì)按照J(rèn)SONField設(shè)置的值進(jìn)行轉(zhuǎn)化;@JSONField在set方法設(shè)置,那么json格式字符串才會(huì)匹配注解上面一樣的對(duì)象屬性,然后對(duì)對(duì)象屬性進(jìn)行賦值。
2.5.配置測(cè)試工具類
2.5.1對(duì)象轉(zhuǎn)化為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");
//table
List<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("計(jì)劃行號(hào)");
columns1.setDataType("S");
listCol.add(columns1);
Columns columns2=new Columns();
columns2.setName("ACCOUNT_PERIOD");
columns2.setCaption("會(huì)計(jì)期");
columns2.setDataType("S");
listCol.add(columns2);
Columns columns3=new Columns();
columns3.setName("RETURN_TIME");
columns3.setCaption("反饋時(shí)間");
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("消息內(nèi)容");
columns5.setDataType("S");
listCol.add(columns5);
Columns columns6=new Columns();
columns6.setName("SYSTEM_ID");
columns6.setCaption("系統(tǒng)別");
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字符串轉(zhuǎn)化為對(duì)象
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");
//table
List<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("計(jì)劃行號(hào)");
columns1.setDataType("S");
listCol.add(columns1);
Columns columns2=new Columns();
columns2.setName("ACCOUNT_PERIOD");
columns2.setCaption("會(huì)計(jì)期");
columns2.setDataType("S");
listCol.add(columns2);
Columns columns3=new Columns();
columns3.setName("RETURN_TIME");
columns3.setCaption("反饋時(shí)間");
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("消息內(nèi)容");
columns5.setDataType("S");
listCol.add(columns5);
Columns columns6=new Columns();
columns6.setName("SYSTEM_ID");
columns6.setCaption("系統(tǒng)別");
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;
}
}
到此這篇關(guān)于java中json和對(duì)象之間相互轉(zhuǎn)換的運(yùn)用的文章就介紹到這了,更多相關(guān)java json和對(duì)象相互轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java中常用的json,jsonarray,map數(shù)據(jù)結(jié)構(gòu)與對(duì)象互轉(zhuǎn)詳解
- Java中對(duì)象?和?json?互轉(zhuǎn)四種方式?json-lib、Gson、FastJson、Jackson
- JAVA中JSONObject對(duì)象和Map對(duì)象之間的相互轉(zhuǎn)換
- Java實(shí)現(xiàn)Json字符串與Object對(duì)象相互轉(zhuǎn)換的方式總結(jié)
- 詳談Java中net.sf.json包關(guān)于JSON與對(duì)象互轉(zhuǎn)的坑
- 基于JSON和java對(duì)象的互轉(zhuǎn)方法
- java對(duì)象與json對(duì)象間的相互轉(zhuǎn)換的方法
- java中實(shí)體類和JSON對(duì)象之間相互轉(zhuǎn)化
- Java中Json字符串和Java對(duì)象的互轉(zhuǎn)
相關(guān)文章
在Idea2020.1中使用gitee2020.1.0創(chuàng)建第一個(gè)代碼庫(kù)的實(shí)現(xiàn)
這篇文章主要介紹了在Idea2020.1中使用gitee2020.1.0創(chuàng)建第一個(gè)代碼庫(kù)的實(shí)現(xiàn),文中通過圖文示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
MyBatis動(dòng)態(tài)sql查詢及多參數(shù)查詢方式
這篇文章主要介紹了MyBatis動(dòng)態(tài)sql查詢及多參數(shù)查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
springmvc項(xiàng)目使用@Valid+BindingResult遇到的問題
這篇文章主要介紹了springmvc項(xiàng)目使用@Valid+BindingResult遇到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Java并發(fā)編程之ConcurrentLinkedQueue源碼詳解
今天帶小伙伴們學(xué)習(xí)一下Java并發(fā)編程之Java ConcurrentLinkedQueue源碼,本篇文章詳細(xì)分析了ConcurrentLinkedQueue源碼,有代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助喲,需要的朋友可以參考下2021-05-05
Java調(diào)用IK分詞器進(jìn)行分詞方式,封裝工具類
這篇文章主要介紹了Java調(diào)用IK分詞器進(jìn)行分詞方式,封裝工具類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08

