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

2023-08-06 0 4,044

目录

1.目录结构

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

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 和 FileReader
            br.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\");
        //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(\"计划行号\");
        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;
    }
}

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

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\");
        //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(\"计划行号\");
        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;
    }
}

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

资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 java中json和对象之间相互转换的运用 http://www.20zxx.cn/806577/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务