將json對象轉為xml進行操作屬性

將json對象轉為xml進行操作屬性

文章目錄

    • 將json對象轉為xml進行操作屬性
      • 前端發送json數據格式
      • 寫入數據庫格式-content字段存儲(varchar(2000))
      • Question實體類-接口映射對象
      • QuestionContent 接收參數對象
      • DAO持久層
      • Mapper層
      • Service層
      • Controller控制層接收
      • xml與對象互轉處理
      • pom.xml引入
      • 查詢功能-xml以json返回頁面

前端發送json數據格式

{"questionContent": {"title": "3. Fran正在構建一個取證分析工作站,并正在選擇一個取證磁盤控制器將其包含在設置中。 以下哪些是取證磁盤控制器的功能? (選擇所有適用的選項。)","choiceImgList": {},"choiceList": {"A": "A. 防止修改存儲設備上的數據","B": "B. 將數據返回給請求設備","C": "C. 將設備報告的錯誤發送給取證主機","D": "D. 阻止發送到設備的讀取命令"}}
}

寫入數據庫格式-content字段存儲(varchar(2000))

在這里插入圖片描述

content字段落入庫中的格式

<QuestionContent><title>Lisa正在試圖防止她的網絡成為IP欺騙攻擊的目標,并防止她的網絡成為這些攻擊的源頭。 以下哪些規則是Lisa應在其網絡邊界配置的最佳實踐?(選擇所有適用的選項)
</title><titleImg></titleImg><choiceList><entry><string>A</string><string>阻止具有內部源地址的數據包進入網絡</string></entry><entry><string>B</string><string>阻止具有外部源地址的數據包離開網絡</string></entry><entry><string>C</string><string>阻止具有公共IP地址的數據包進入網絡</string></entry><entry><string>D</string><string> 阻止帶有私有IP地址的數據包離開網絡</string></entry></choiceList><choiceImgList/>
</QuestionContent>

Question實體類-接口映射對象

@XmlRootElement指定一個類為 XML 根元素。JAXB 是一種允許 Java 開發者將 Java 對象映射為 XML 表示形式,以及從 XML 還原為 Java 對象的技術。
Question 類被注解為 XML 根元素。當你使用 JAXB 序列化一個 Question 對象時,它將生成一個以 <Question> 為根元素的 XML 文檔import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Question implements Serializable {private String content;private QuestionContent questionContent;}

QuestionContent 接收參數對象

使用@XStreamAlias("QuestionContent")為類指定別名。例如,為QuestionContent類指定別名,當使用XStream序列化對象時,<QuestionContent類指定別名>將作為根元素,而<title>將作為name字段的元素名。import com.thoughtworks.xstream.annotations.XStreamAlias;@XStreamAlias("QuestionContent")
public class QuestionContent {@XStreamAlias("title")private String title;@XStreamAlias("titleImg")private String titleImg = "";@XStreamAlias("choiceList")private LinkedHashMap<String, String> choiceList;@XStreamAlias("choiceImgList")private LinkedHashMap<String, String> choiceImgList;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getTitleImg() {return titleImg;}public void setTitleImg(String titleImg) {this.titleImg = titleImg;}public LinkedHashMap<String, String> getChoiceList() {return choiceList;}public void setChoiceList(LinkedHashMap<String, String> choiceList) {this.choiceList = choiceList;}public LinkedHashMap<String, String> getChoiceImgList() {return choiceImgList;}public void setChoiceImgList(LinkedHashMap<String, String> choiceImgList) {this.choiceImgList = choiceImgList;}}

DAO持久層

public interface QuestionMapper {public void insertQuestion(Question question) throws Exception;public void addQuestionKnowledgePoint(@Param("questionId") int questionId,@Param("pointId") int pointId) throws Exception;
}	

Mapper層

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.extr.persistence.QuestionMapper"><insert id="addQuestionKnowledgePoint">insert into et_question_2_point(question_id,point_id)values(#{questionId},#{pointId})</insert><insert id="insertQuestion" parameterType="com.extr.domain.question.Question"useGeneratedKeys="true" keyProperty="id">insert into et_question(name,content,question_type_id,create_time,creator,answer,analysis,reference,examing_point,keygetQuestionListword,points)values(#{name},#{content},#{question_type_id},#{create_time},#{creator},#{answer},#{analysis},#{referenceName},#{examingPoint},#{keyword},#{points})</insert>
</mapper>	

Service層

	
@Service("questionService")
public class QuestionServiceImpl implements QuestionService {	@Autowiredprivate QuestionMapper questionMapper;@Override@Transactionalpublic void addQuestion(Question question) {// TODO Auto-generated method stubtry {questionMapper.insertQuestion(question);for (Integer i : question.getPointList()) {questionMapper.addQuestionKnowledgePoint(question.getId(), i);}} catch (Exception e) {throw new RuntimeException(e.getMessage());}}
}

Controller控制層接收

import com.extr.util.xml.Object2Xml;	
@Controller
public class QuestionController {@RequestMapping(value = "/admin/questionAdd", method = RequestMethod.POST)public @ResponseBody Message addQuestion(@RequestBody Question question) {question.setContent(Object2Xml.toXml(question.getQuestionContent()));Message message = new Message();try {questionService.addQuestion(question);} catch (Exception e) {message.setResult("error");log.Info(e.getClass().getName());log.info(e);}return message;}
}

xml與對象互轉處理

package com.extr.util.xml;import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;public class Object2Xml {public static String toXml(Object obj){XStream xstream=new XStream();xstream.processAnnotations(obj.getClass());return xstream.toXML(obj);}public static <T> T toBean(String xmlStr,Class<T> cls){XStream xstream=new XStream(new DomDriver());xstream.processAnnotations(cls);@SuppressWarnings("unchecked")T obj=(T)xstream.fromXML(xmlStr);return obj;}

pom.xml引入

用于將Java對象序列化為XML,以及從XML反序列化為Java對象。它提供了一種直觀的方式來處理Java對象和XML之間的轉換,而無需編寫大量的映射代碼或配置。

		<!-- Xstream --><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.2</version></dependency>

查詢功能-xml以json返回頁面

public class QuestionAdapter {private QuestionContent questionContent;@GetMapping("/some-endpoint")  public @ResponseBody String getQuestionContentAsJson((Question question)) {  this.questionContent = Object2Xml.toBean(question.getContent(),QuestionContent.class);question.setQuestionContent(this.questionContent);try {  return objectMapper.writeValueAsString(this.questionContent);  } catch (Exception e) {  // 處理異常并返回適當的錯誤響應  }  // 如果沒有錯誤,但您仍然想返回一個默認的或空的JSON,您可以這樣做:  return question; // 或任何其他您想要的默認JSON  }
}    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39043.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39043.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39043.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《每天5分鐘用Flask搭建一個管理系統》第13章:性能優化

第13章&#xff1a;性能優化 13.1 性能優化的重要性 性能優化確保應用能夠處理高并發請求&#xff0c;減少響應時間&#xff0c;提高用戶體驗和應用的可擴展性。 13.2 Flask緩存機制 緩存是提高Web應用性能的關鍵技術之一&#xff0c;它可以減少數據庫查詢次數和服務器計算…

Java 開發環境配置

配置Java開發環境涉及幾個主要步驟&#xff0c;包括安裝Java Development Kit (JDK)、配置環境變量和選擇集成開發環境&#xff08;IDE&#xff09;。以下是詳細的配置步驟&#xff1a; ### 1. 安裝 Java Development Kit (JDK) 1. **下載 JDK**&#xff1a; 訪問 Oracle …

完全指南:在Linux上安裝和精通Conda

前言 Conda是一個強大的包管理和環境管理工具&#xff0c;特別適用于數據科學和機器學習項目。本文將詳細指導你在Linux系統上安裝、配置和充分利用Conda的方法。 步驟一&#xff1a;下載和安裝Conda 下載安裝包&#xff1a; wget https://repo.anaconda.com/miniconda/Minic…

普元EOS學習筆記-低開實現圖書的增刪改查

前言 在前一篇《普元EOS學習筆記-創建精簡應用》中&#xff0c;我已經創建了EOS精簡應用。 我之前說過&#xff0c;EOS精簡應用就是自己創建的EOS精簡版&#xff0c;該項目中&#xff0c;開發者可以進行低代碼開發&#xff0c;也可以進行高代碼開發。 本文我就記錄一下自己在…

Golang中swtich中如何強制執行下一個代碼塊

switch 語句中的 case 代碼塊會默認帶上 break&#xff0c;但可以使用 fallthrough 來強制執行下一個 case 代碼塊。 package mainimport ("fmt" )func main() {isSpace : func(char byte) bool {switch char {case : // 空格符會直接 break&#xff0c;返回 false…

2024年6月 | deepin 深度應用商店-應用更新記錄

新增應用 序號應用名稱depein 系統版本應用分類應用類型1bkViewer 照片瀏覽器deepin 20.9 deepin V23網絡應用wine291助手deepin 20.9 deepin V23編程開發wine3風云CAD轉換器deepin 20.9 deepin V23編程開發wine4Disk Savvydeepin 20.9 deepin V23系統工具wine5飛貓盤…

miniconda3 安裝jupyter notebook并配置網絡訪問

由于服務器安裝的miniconda3&#xff0c;無jupyter notebook&#xff0c;所以手工安裝jupyter notebook 1 先conda 安裝相關包 在base 環境下 conda install ipython conda install jupyter notebook 2 生成配置文件 jupyter notebook --generate-config Writing defaul…

Nginx 常用配置與應用

Nginx 常用配置與應用 官網地址&#xff1a;https://nginx.org/en/docs/ 目錄 Nginx 常用配置與應用 Nginx總架構 正向代理 反向代理 Nginx 基本配置反向代理案例 負載均衡 Nginx總架構 進程模型 正向代理 反向代理 Nginx 基本配置反向代理案例 負載均衡 Nginx 基本配置…

新人程序員接手丑陋的老代碼怎么辦?改還是不改......

許多小伙伴在初入職場的時候&#xff0c;都會遇到要接手老代碼的情況&#xff0c;那么問題來了&#xff0c;如果老代碼十分丑陋&#xff0c;你是改還是不改&#xff1f; 不改吧&#xff0c;心里難受&#xff1b;改吧&#xff0c;指不定會遇到什么情況&#xff0c;比如…… 1.…

【嫦娥四號】月球著陸器中子和劑量測量(LND)實驗

一、引言 嫦娥四號任務是中國月球探測計劃的重要里程碑&#xff0c;實現了人類首次在月球背面軟著陸&#xff0c;并展開了月面巡視和中繼通信。本文所描述的嫦娥四號著陸器上的中子與劑量測定實驗&#xff08;Lunar Lander Neutrons and Dosimetry Experiment, LND&#xff09…

【雷豐陽-谷粒商城 】【分布式高級篇-微服務架構篇】【17】認證服務01

持續學習&持續更新中… 守破離 【雷豐陽-谷粒商城 】【分布式高級篇-微服務架構篇】【17】認證服務01 環境搭建驗證碼倒計時短信服務郵件服務驗證碼短信形式&#xff1a;郵件形式&#xff1a; 異常機制MD5參考 環境搭建 C:\Windows\System32\drivers\etc\hosts 192.168.…

嵌入式PCB制圖面試題及參考答案(2萬字長文)

目錄 如何設計適用于RF(射頻)應用的PCB? 介紹柔性PCB設計的基本考慮因素。 在高電壓PCB設計中,如何確保安全距離? 何為埋盲孔技術?在哪些應用中會用到? PCB設計項目管理的關鍵要素有哪些? 如何有效地與硬件工程師、機械工程師協同工作? 介紹一種提高設計審查效…

JAVA每日作業day7.1-7.3小總結

ok了家人們前幾天學了一些知識&#xff0c;接下來一起看看吧 一.API Java 的 API &#xff08; API: Application( 應用 ) Programming( 程序 ) Interface(接口 ) &#xff09; Java API 就是 JDK 中提供給我們使用的類&#xff0c;這些類將底層 的代碼實現封裝了起來&#x…

編寫高效的Java工具類:實用技巧與設計模式

編寫高效的Java工具類&#xff1a;實用技巧與設計模式 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. 工具類的定義與作用 在軟件開發中&#xff0c;工具…

【echarts】拖拽滑塊dataZoom-slider自定義樣式,簡單適配移動端

電腦端 移動端 代碼片段 dataZoom: [{type: inside,start: 0,end: 100},{type: slider,backgroundColor: #F2F5F9,fillerColor: #BFCCE3,height: 13, // 設置slider的高度為15start: 0,end: 100,right: 60,left: 60,bottom: 15,handleIcon:path://M30.9,53.2C16.8,53.2,5.3,41.…

Linux源碼閱讀筆記12-RCU案例分析

在之前的文章中我們已經了解了RCU機制的原理和Linux的內核源碼&#xff0c;這里我們要根據RCU機制寫一個demo來展示他應該如何使用。 RCU機制的原理 RCU&#xff08;全稱為Read-Copy-Update&#xff09;,它記錄所有指向共享數據的指針的使用者&#xff0c;當要修改構想數據時&…

不要把面子太當回事

新手拍短視頻真人出鏡&#xff0c;會覺得拍視頻不自然怎么辦&#xff1f;感覺自己好傻。 其實不要把面子太當回事&#xff0c;堅持不把面子太當回事&#xff0c;反正剛開始也沒人看。這是真的事實&#xff0c;大家都非常忙&#xff0c;在你身上停留的時間就幾秒鐘。不要在腦海…

postgreSQL入門

PostgreSQL 教程 約束條件 not null, 不能為空 unique, 在所有數據中必須唯一 check, 字段設置條件 default, 字段默認值 primary(not null, unique), 主鍵, 不能為空且不能重復 數據庫操作 create database [name]; // 建立數據庫 drop database [name]; // 刪除數據庫 \c …

如何快速使用C語言操作sqlite3

itopen組織1、提供OpenHarmony優雅實用的小工具2、手把手適配riscv qemu linux的三方庫移植3、未來計劃riscv qemu ohos的三方庫移植 小程序開發4、一切擁抱開源&#xff0c;擁抱國產化 一、sqlite3庫介紹 sqlite3庫可從官網下載&#xff0c;當前版本為sqlite3 3.45.3ht…

systemctl命令使用

systemctl 作用&#xff1a;可以控制軟件&#xff08;服務&#xff09;的啟動、關閉、開機自啟動 系統內置服務均可被systemctl控制第三方軟件&#xff0c;如果自動注冊了可以被systemctl控制第三方軟件&#xff0c;如果沒有自動注冊&#xff0c;可以手動注冊 語法 systemct…