xml转json

这篇具有很好参考价值的文章主要介绍了xml转json。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

XML有个坑,就是XML转JSON中如何把单个元素转成数组,导致映射到实体类时无法执行,问题如下

初始xml格式如下:

<java>
    <version>1.8</version>
</java>

上述转成json格式就是:

{
  "java": {
    "version": "1.8"
  }
}

但是java不止一个版本,我们需要的格式就如下:

{
  "java": {
    "version": [
      "1.8",
      "11"
    ]
  }
}

如果我们要做到上诉json所示,需要xml格式为如下,但是有时候数据就只有单个的情况下,我们格式转换就有问题

<java>
    <version>1.8</version>
    <version>11</version>
</java>

问题:就是我们不知道xml中的元素是单个元素还是一个数组形式存在的

解决办法:

1、引入maven依赖
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.71</version>
        </dependency>
        <!--xml转JSON-->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20230618</version>
        </dependency>
2、使用我的工具类:
package com.example.test.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.json.XML;
import org.json.XMLParserConfiguration;

import java.util.Set;

/**
 * xml格式转换工具
 * @author ZPA
 * @Date 2023年8月31日09:47:16
 */
public class XmlUtils {

    /**
     * xml 转为 实体类
     * @param xml xml的数据,为String类型
     * @param clazz 实体类的class
     * @return T
     * @param <T>
     */
    public static <T> T xmlToBean(String xml,Class<T> clazz){
        return xmlToJson(xml).toJavaObject(clazz);
    }

    /**
     * xml 转为 实体类 (指定节点强制转数组)
     * @param xml xml的数据,为String类型
     * @param clazz 实体类的class
     * @return T
     * @param <T>
     */
    public static <T> T xmlToBean(String xml, Set<String> arrayNodes,Class<T> clazz){
        return xmlToJson(xml,arrayNodes).toJavaObject(clazz);
    }

    /**
     * xml 字符串转 json
     * @param xml
     * @return
     */
    public static JSONObject xmlToJson(String xml){
        String s = XML.toJSONObject(xml).toString();
        return JSON.parseObject(s, JSONObject.class);
    }


    /**
     * 指定节点强制转数组
     * @param xml
     * @param arrayNodes
     * @return
     */
    public static JSONObject xmlToJson(String xml, Set<String> arrayNodes) {
        XMLParserConfiguration config = XMLParserConfiguration.KEEP_STRINGS;
        // 设置withForceList配置强制数组标签名

        if (arrayNodes != null && arrayNodes.size() > 0) {
            config = config.withForceList(arrayNodes);
        }
        return JSON.parseObject(XML.toJSONObject(xml, config).toString());
    }

}
3、测试
    @Test
    public void test(){
        String xml = "<java>\n" +
                "    <version>1.8</version>\n" +
                "</java>";
        // 把version转换为数组
        HashSet<String> set = Sets.newHashSet();
        set.add("version");
        JSONObject haveListJson = XmlUtils.xmlToJson(xml, set);
        System.out.println(haveListJson);
        // 转成普通的json
        JSONObject json = XmlUtils.xmlToJson(xml);
    }

可以看见的确吧version转成了集合

xml转json,springboot,java,xml,json,maven,spring boot,spring文章来源地址https://www.toymoban.com/news/detail-685834.html

依赖报错解决方法:java.lang.NoSuchMethodError: org.json.JSONTokener.<init>(Ljava/io/Reader;)V

就我而言,这是因为依赖项“spring-boot-starter-test”依赖于“android-json”。排除后,它起作用了:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android-json</artifactId>
        </exclusion>
    </exclusions>
</dependency>

到了这里,关于xml转json的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • springboot+maven插件调用mybatis generator自动生成对应的mybatis.xml文件和java类

    springboot+maven插件调用mybatis generator自动生成对应的mybatis.xml文件和java类

    mybatis最繁琐的事就是sql语句和实体类,sql语句写在java文件里很难看,字段多的表一开始写感觉阻力很大,没有耐心,自动生成便成了最称心的做法。自动生成xml文件,dao接口,实体类,虽一直感觉不太优雅,但省去了很多麻烦,当表增加或修改字段的时候重新生成便轻松搞

    2024年02月14日
    浏览(11)
  • 【JAVA EE】Spring Boot中maven环境的搭建和设置

    【JAVA EE】Spring Boot中maven环境的搭建和设置

    Sping Boot是Spring推出的框架,是Spring家族的一个子项目,其设计初衷是为了简化Spring配置,从而让用户可以轻松构建独立运行的程序,并极大提高工作效率。 本系列将学习Spring Boot的相关原理和简单开发。 在Spring Boot框架出现以前,java EE开发常用的框架是Spring,该框架开始于

    2024年02月06日
    浏览(13)
  • SpringBoot 插件 spring-boot-maven-plugin 原理,以及SpringBoo工程部署的 jar 包瘦身实战

    SpringBoot 插件 spring-boot-maven-plugin 原理,以及SpringBoo工程部署的 jar 包瘦身实战

    我们直接使用 maven package (maven自带的package打包功能),打包Jar包的时候,不会将该项目所依赖的Jar包一起打进去,在使用 java -jar 命令启动项目时会报错,项目无法正常启动。这个时候,我们就可以考虑引用 spring-boot-maven-plugin 插件来为项目打Jar包。 maven项目的pom.xml中,添

    2024年02月06日
    浏览(16)
  • 手把手搭建 java spring boot 框架 maven 项目 web 网址访问

    手把手搭建 java spring boot 框架 maven 项目 web 网址访问

    第一步我们去  spring boot 官网创建项目并下载压缩包  创建项目网址: Spring Initializr https://start.spring.io/ 我们添加一个 srping web 的拓展包 接下来我们点击 generate 创建 并下载压缩包即可 接下来我们将压缩文件包解压到项目根目录使用编辑器打开即可,如果编辑器提示 点击构

    2024年04月23日
    浏览(11)
  • ChatGPT:Spring Boot和Maven——Java应用开发的关键工具和区别

    Springboot是什么? ChatGPT: Spring Boot是一个用于构建Java应用程序的开源框架,它是Spring Framework的一部分,但旨在简化Spring应用程序的开发。Spring Boot的目标是使Spring应用程序的创建、配置和部署变得更加容易,通过提供一些默认配置和约定,开发者可以快速搭建一个生产就绪的

    2024年02月07日
    浏览(12)
  • SpringBoot版本与Spring、java、maven、gradle版本对应汇总(1->3版本,收藏一波)

    SpringBoot版本与Spring、java、maven、gradle版本对应汇总(1->3版本,收藏一波)

    Spring Boot 3.1.x Spring Boot 3.0.x Spring Boot 2.7.x Spring Boot 2.6.x Spring Boot 2.5.x Spring Boot 2.4.x Spring Boot 2.3.x Spring Boot 2.2.x Spring Boot 2.1.x Spring Boot 2.0.x Spring Boot 1.5.x   Spring Boot 1.4.x  Spring Boot 1.3.x   Spring Boot 1.2.x  

    2024年02月03日
    浏览(10)
  • Spring Boot各版本与Java版本的对应兼容关系,与构建工具(Maven、Gradle)版本的对应兼容关系,对servlet 容器的支持

    Spring Boot各版本与Java版本的对应兼容关系,与构建工具(Maven、Gradle)版本的对应兼容关系,对servlet 容器的支持

    by:垃圾程序员 当前文章具有时效性,在当前springboot的版本下做的整合。之后大家视情况可以直接到Spring的官网查看 Spring | Home Level up your Java code and explore what Spring can do for you. https://spring.io/ 下面是Spring Boot各个版本的支持时间 下面是Spring Boot 推荐使用的各个版面,并标注出

    2024年02月10日
    浏览(69)
  • Spring Boot拓展XML格式的请求和响应

    Spring Boot拓展XML格式的请求和响应

    在我们开发过程中,我们经常使用的参数绝大多少事HTML和JSON格式的请求和响应处理,但是我们在实际开发过程中,我们可能经历一些,比如对于XML格式的请求,我们在后端应该如何接收,并且如何将XML格式的参数变成对象,然后返回一个XML对象呢? 实现原理 我们在处理XM

    2024年02月07日
    浏览(11)
  • java xml转json

    java xml转json 技术博客 http://idea.coderyj.com/ 最近在对接海康摄像头不支持json 返回的数据是xml尝试了各种方法,所以来总结一下 1.得到xml数据 2.java 将xml转json 依赖包 上代码 ps new ByteArrayInputStream(xmlString.getBytes(\\\"UTF-8\\\")) 一定要先转换为 utf8 才可以不然会直接失败

    2024年02月10日
    浏览(11)
  • 【Spring Boot】使用XML配置文件实现数据库操作(一)

    SQL映射文件就是我们通常说的mapper.xml配置文件,主要实现SQL语句的配置和映射,同时实现Java的POJO对象与数据库中的表和字段进行映射关联的功能。 1.1 mapper.xml的结构 下面就来详细介绍mapper.xml文件的结构。首先看一个完整的mapper.xml示例:

    2024年02月10日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包