XML字符串转换为Json字符串和XML字符串转换为Java对象

记录:384

场景:把XML字符串转换为Json字符串。把XML字符串转换为Java对象。

版本:JDK 1.8

1.XML转换为JSON字符串

1.1引用Jar

Jar包:hutool-all-5.8.12.jar

类位置:cn.hutool.json.XML

1.2自定义封装方法

public static String parseXml2JSONString(String xmlStr){
  JSONObject jsonObject = XML.toJSONObject(xmlStr);
  return jsonObject.toString();
}

2.XML字符串转换为Java对象

2.1引用Jar

Jar包:rt.jar,jdk 1.8自带包。

类位置:

javax.xml.bind.JAXBContext

javax.xml.bind.Unmarshaller

2.2自定义封装方法

public static <T> T parseXml2Object(String xmlStr,Class<T> targetClass){
  JAXBContext jaxbContext = null;
  try {
    jaxbContext = JAXBContext.newInstance(targetClass);
    Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
    return (T) unmarshaller.unmarshal(new StringReader(xmlStr));
  } catch (JAXBException e) {
    e.printStackTrace();
  }
  return null;
}

3.测试main方法

3.1.main方法

在main方法做测试验证。

public static void main(String[] args) throws JAXBException {
  String xml01 = getXml01();
  String xml02 = getXml02();
  //1.测试xml字符串转换为JSON字符串
  log.info("xml01转换为Json字符串:");
  log.info(parseXml2JSONString(xml01).toString());
  log.info("xml02转换为Json字符串:");
  log.info(parseXml2JSONString(xml02).toString());
  //2.测试xml字符串转换为Java对象
  log.info("xml01转换为Java对象:");
  DataDTO dataDTO =parseXml2Object(xml01,DataDTO.class);
  log.info(dataDTO.toString());
  log.info("xml02转换为Java对象:");
  DataListDTO dataListDTO =parseXml2Object(xml01,DataListDTO.class);
  log.info(dataListDTO.toString());
}

3.2.XML字符串

(1)字符串一

<province>
  <provinceId>1</provinceId>
  <provinceName>浙江省</provinceName>
  <landArea>105500</landArea>
  <population>6577</population>
  <gross>7.77</gross>
  <city>
    <cityId>1</cityId>
    <cityName>杭州</cityName>
    <landArea>16850</landArea>
    <population>1237</population>
    <gross>1.88</gross>
    <cityDescribe>杭州是一个好城市</cityDescribe>
    <dataYear>2022</dataYear>
      <updateTime>2023-03-12 15:58:59</updateTime>
  </city>
</province>

(2)字符串二

<province>
  <provinceId>1</provinceId>
  <provinceName>浙江省</provinceName>
  <landArea>105500</landArea>
  <population>6577</population>
  <gross>7.77</gross>
  <city>
     <cityId>1</cityId>
     <cityName>杭州</cityName>
     <landArea>16850</landArea>
     <population>1237</population>
     <gross>1.81</gross>
     <cityDescribe>杭州是一个好城市</cityDescribe>
     <dataYear>2021</dataYear>
     <updateTime>2023-03-12 15:58:59</updateTime>
  </city>
  <city>
    <cityId>2</cityId>
    <cityName>杭州</cityName>
    <landArea>16850</landArea>
    <population>1237</population>
    <gross>1.88</gross>
    <cityDescribe>杭州是一个好城市</cityDescribe>
    <dataYear>2022</dataYear>
    <updateTime>2023-03-12 15:58:59</updateTime>
  </city>
</province>

4.支撑对象和数据

4.1获取数据方法getXml01()

public static String getXml01(){
 return "<province>\n" +
    "    <provinceId>1</provinceId>\n" +
    "    <provinceName>浙江省</provinceName>\n" +
    "    <landArea>105500</landArea>\n" +
    "    <population>6577</population>\n" +
    "    <gross>7.77</gross>\n" +
    "    <city>\n" +
    "        <cityId>1</cityId>\n" +
    "        <cityName>杭州</cityName>\n" +
    "        <landArea>16850</landArea>\n" +
    "        <population>1237</population>\n" +
    "        <gross>1.88</gross>\n" +
    "        <cityDescribe>杭州是一个好城市</cityDescribe>\n" +
    "        <dataYear>2022</dataYear>\n" +
    "\t\t<updateTime>2023-03-12 15:58:59</updateTime>\n" +
    "    </city>\n" +
    "</province>";
}

4.2获取数据方法getXml02()

public static String getXml02(){
 return "<province>\n" +
     "    <provinceId>1</provinceId>\n" +
     "    <provinceName>浙江省</provinceName>\n" +
     "    <landArea>105500</landArea>\n" +
     "\t<population>6577</population>\n" +
     "    <gross>7.77</gross>\n" +
     "    <city>\n" +
     "        <cityId>1</cityId>\n" +
     "        <cityName>杭州</cityName>\n" +
     "        <landArea>16850</landArea>\n" +
     "        <population>1237</population>\n" +
     "        <gross>1.81</gross>\n" +
     "        <cityDescribe>杭州是一个好城市</cityDescribe>\n" +
     "        <dataYear>2021</dataYear>\n" +
     "\t\t<updateTime>2023-03-12 15:58:59</updateTime>\n" +
     "    </city>\n" +
     "\t<city>\n" +
     "        <cityId>2</cityId>\n" +
     "        <cityName>杭州</cityName>\n" +
     "        <landArea>16850</landArea>\n" +
     "        <population>1237</population>\n" +
     "        <gross>1.88</gross>\n" +
     "        <cityDescribe>杭州是一个好城市</cityDescribe>\n" +
     "        <dataYear>2022</dataYear>\n" +
     "\t\t<updateTime>2023-03-12 15:58:59</updateTime>\n" +
     "    </city>\n" +
     "</province>";
}

4.3 DataListDTO对象

@Data
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "province")
@XmlType( propOrder ={"provinceId","provinceName","landArea","population","gross","city"})
public class DataListDTO implements Serializable {
  private Long provinceId;
  private String provinceName;
  private Double landArea;
  private Long population;
  private Double gross;
  private List<CityDTO> city;
}

4.4DataDTO对象

@Data
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "province")
@XmlType( propOrder ={"provinceId","provinceName","landArea","population","gross","city"})
public class DataDTO implements Serializable {
  private Long provinceId;
  private String provinceName;
  private Double landArea;
  private Long population;
  private Double gross;
  private CityDTO city;
}

4.5CityDTO对象

@Data
public class CityDTO implements Serializable {
  private Long cityId;
  private String cityName;
  private Double landArea;
  private Long population;
  private Double gross;
  private String cityDescribe;
  private String dataYear;
  private String updateTime;
}

以上,感谢。

2023年3月12日

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java 中,可以使用 JSON 解析库将 JSON 字符串转换JSON 对象。常用的 JSON 解析库有 GSON、FastJSON、Jackson 等。 以 GSON 为例,可以按照以下步骤将 JSON 字符串转换JSON 对象: 1. 引入 GSON 库,例如在 Maven 项目中可以在 pom.xml 中添加以下依赖: ``` <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency> ``` 2. 创建 Gson 对象,并使用 fromJson 方法将 JSON 字符串转换JSON 对象,示例代码如下: ``` import com.google.gson.Gson; public class JsonDemo { public static void main(String[] args) { String jsonString = "{\"name\":\"张三\",\"age\":20}"; Gson gson = new Gson(); Person person = gson.fromJson(jsonString, Person.class); System.out.println(person.getName() + " " + person.getAge()); } } class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` 在这个例子中,我们先定义了一个 JSON 字符串 `jsonString`,其中包含了一个名为“张三”,年龄为 20 的人的信息。接着,我们创建了一个 Gson 对象,并使用 `fromJson` 方法将 `jsonString` 转换为 Person 对象。在 `fromJson` 方法中,第一个参数是要转换JSON 字符串,第二个参数是要转换成的对象类型。最后,我们从 Person 对象中获取了姓名和年龄,并打印出来。 如果您使用其他的 JSON 解析库,也可以通过类似的方式将 JSON 字符串转换JSON 对象

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值