您的位置:首页 > 健康 > 养生 > 将json对象转为xml进行操作属性

将json对象转为xml进行操作属性

2024/10/6 20:34:33 来源:https://blog.csdn.net/weixin_42786460/article/details/140062885  浏览:    关键词:将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  }
}    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com