将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.mzph.cn/web/39043.shtml

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

相关文章

普元EOS学习笔记-低开实现图书的增删改查

前言 在前一篇《普元EOS学习笔记-创建精简应用》中&#xff0c;我已经创建了EOS精简应用。 我之前说过&#xff0c;EOS精简应用就是自己创建的EOS精简版&#xff0c;该项目中&#xff0c;开发者可以进行低代码开发&#xff0c;也可以进行高代码开发。 本文我就记录一下自己在…

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.…

JAVA每日作业day7.1-7.3小总结

ok了家人们前几天学了一些知识&#xff0c;接下来一起看看吧 一.API Java 的 API &#xff08; API: Application( 应用 ) Programming( 程序 ) Interface(接口 ) &#xff09; Java API 就是 JDK 中提供给我们使用的类&#xff0c;这些类将底层 的代码实现封装了起来&#x…

【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;在你身上停留的时间就几秒钟。不要在脑海…

systemctl命令使用

systemctl 作用&#xff1a;可以控制软件&#xff08;服务&#xff09;的启动、关闭、开机自启动 系统内置服务均可被systemctl控制第三方软件&#xff0c;如果自动注册了可以被systemctl控制第三方软件&#xff0c;如果没有自动注册&#xff0c;可以手动注册 语法 systemct…

企业出海如何应对国际差旅报销的复杂性?

在全球化浪潮的推动下&#xff0c;越来越多的中国企业开始迈向国际市场。然而&#xff0c;企业在“走出去”的过程中不仅面临新的商机&#xff0c;也需要克服诸多挑战。尤其是国际差旅报销的复杂性&#xff0c;成为出海企业必须解决的重要问题。 国际差旅报销的四大挑战 多元…

【分布式数据仓库Hive】常见问题及解决办法

目录 一、启动hive时发现log4j版本和hadoop的版本有冲突 解决办法&#xff1a;删除hive下高版本的slf4j 二、启动hive报错 Exception in thread "main" java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/Object;)V …

postgres数据库的流复制

1. 流复制和逻辑复制的差异 逻辑复制和流复制最直观的不同是&#xff0c;逻辑复制支持表级别复制区分点事原理不同 逻辑日志是在wal日志产生的数据库上&#xff0c;由逻辑解析模块对wal日志进行初步的解析&#xff0c;解析结果是ReorderBufferChange&#xff08;理解为HeapTup…

干货分享|如何将前端代理服务器(BFF)接入身份认证(3完结篇)

续集3 前篇文章在前面发布&#xff0c;同学们可以自行找一下。 本篇文章将继续通过实例来详细讲解如何将前端代理服务器&#xff08;BFF&#xff09;接入身份认证。我们将使用一个示例应用来演示 BFF 与身份认证的集成过程。 3 在 Full BFF 中接入认证平台 本小节将介绍如何…

Raylib 坐标系适应与GPU绘制参数

通过750 - 鼠标坐标&#xff0c;把原点在左上角的鼠标坐标变成左下角 实现输入数据后的坐标系同GPU原点在左下角坐标相同&#xff0c; 比数组0&#xff0c;0对应左上角好&#xff0c; 此时实际上数组0&#xff0c;0对应左下角 #include <raylib.h> // 感受&#xff1a…

【SpringBoot配置文件读取】无法读取yaml文件中文字符

1. yaml配置文件 注意要将该文件编码格式改为UTF-8 spring:application:name: 好好学习admin:name: 李斯age: 24books:- name: 数据结构desc: 数据书- name: 编译原理desc: 编译书2.配置实体类 Data设置get&#xff0c;set方法Component注册为BeanConfigurationProperties(p…

开发者聊科学作息时间表

非常有幸对科学作息时间表app的开发者做一次采访。 问&#xff1a;你对科学作息时间表app满意么&#xff1f; 答&#xff1a;非常不满意&#xff0c;我们的设想是让他更智能&#xff0c;更多的提醒方式&#xff0c;更好的交互体验。如果作为一个闹钟他是非常不合格的&#xff0…

R可视化数据必要格式——长格式

一、引言 我们在对数据进行可视化时遇到最头疼、最常见的问题是什么&#xff1f;数据问题。 因为我们往往不会从零自己编程进行可视化&#xff0c;往往是现有模板或积累&#xff0c;而正确的数据格式对应正确的图形包要求&#xff0c;一定会正确出图&#xff0c;所以只有一个问…